Mybatis接口编程方式实现增删改查

本文示例工程免费下载

1、首先还是mybatis的配置文件mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE configuration

PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

<!-- 这是根标签 -->

<configuration>

<!-- 元素允许在主配置文件之外提供一个properties格式对应文件,从而使得主配置文件更加通用。这样对部署非常有用 -->

<properties resource="mysql.properties" />

<!-- 设置别名,一定要放在properties下面 -->

<typeAliases>

<typeAlias alias="Employeer" type="com.mucfc.model.Employeer" />

</typeAliases>

<!-- 配置数据源相关的信息 -->

<environments default="development">

<environment id="development">

<transactionManager type="JDBC" />

<dataSource type="POOLED">

<!-- <property name="driver" value="com.mysql.jdbc.Driver"/>

<property name="url" value="jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8"/>

<property name="username" value="root"/>

<property name="password" value="christmas258@"/> -->

<property name="driver" value="${driver}" />

<property name="url" value="${url}" />

<property name="username" value="${username}" />

<property name="password" value="${password}" />

</dataSource>

</environment>

</environments>

<!-- 列出映射文件 -->

<mappers>

<mapper resource="com/mucfc/model/Employeer.xml" />

</mappers>

</configuration>

其中配置文件mysql.properties

driver=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/test?charset=utf8

username=root

password=christmas258@

2、数据表对应的类Employeer.JAVA

package com.mucfc.model;

import java.io.Serializable;

/**

* 雇员信息类

*@author linbingwen

*@time 2015.5.11

*/

public class Employeer {

private Integer employeer_id;

private String employeer_name;

private Integer employeer_age ;

private String employeer_department;

private String employeer_worktype;

public Employeer() {

super();

}

public Integer getEmployeer_id() {

return employeer_id;

}

public void setEmployeer_id(Integer employeer_id) {

this.employeer_id = employeer_id;

}

public String getEmployeer_name() {

return employeer_name;

}

public void setEmployeer_name(String employeer_name) {

this.employeer_name = employeer_name;

}

public Integer getEmployeer_age() {

return employeer_age;

}

public void setEmployeer_age(Integer employeer_age) {

this.employeer_age = employeer_age;

}

public String getEmployeer_department() {

return employeer_department;

}

public void setEmployeer_department(String employeer_department) {

this.employeer_department = employeer_department;

}

public String getEmployeer_worktype() {

return employeer_worktype;

}

public void setEmployeer_worktype(String employeer_worktype) {

this.employeer_worktype = employeer_worktype;

}

@Override

public String toString() {

return "Employeer [employeer_id=" + employeer_id + ", employeer_name="

+ employeer_name + ", employeer_age=" + employeer_age

+ ", employeer_department=" + employeer_department

+ ", employeer_worktype=" + employeer_worktype + "]";

}

}

然后是SQL语句的配置Employeer.xml:

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.mucfc.mapper.EmployeerMapper">

<!-- 查找 -->

<select id="findEmployeerByID" parameterType="int" resultType="Employeer">

select* from `t_employeer` where employeer_id =#{employeer_id}

</select>

<!-- 插入 -->

<!-- useGeneratedKeys设置为"true"表明要MyBatis获取由数据库自动生成的主键;keyProperty="id"指定把获取到的主键值注入到Employeer的id属性 -->

<insert id="addEmployeer" parameterType="Employeer"

useGeneratedKeys="true" keyProperty="employeer_id">

insert into `t_employeer`(employeer_name,employeer_age,employeer_department,employeer_worktype)

values(#{employeer_name},#{employeer_age},#{employeer_department},#{employeer_worktype})

</insert>

<!-- 删除 -->

<delete id="deleteEmployeer" parameterType="int">

delete from `t_employeer` where employeer_id = #{employeer_id}

</delete>

<!-- 修改 -->

<update id="updateEmployeer" parameterType="Employeer">

update t_employeer set employeer_name = #{employeer_name},employeer_age= #{employeer_age},employeer_department = #{employeer_department}

,employeer_worktype=#{employeer_worktype} where employeer_id = #{employeer_id}

</update>

</mapper>

注意com.mucfc.mapper.EmployeerMapper这个类是存在的,它是一个接口类,上一讲我们是使用com.mucfc.model.EmployeerMapper,而上一讲的这个类是不存在的

4、SQL语句映射类EmployeerMapper.java

package com.mucfc.mapper;

import com.mucfc.model.Employeer;

/**

* SQL语句映射类

* @author linbingwen

* @time 2015.5.11

*/

public interface EmployeerMapper {

/**

* 注意要和Employeer.xml的方法名对应

*/

public Employeer findEmployeerByID(int id);

/**

* 注意要和Employeer.xml的方法名对应

*/

public void addEmployeer(Employeer employeer);

/**

* 注意要和Employeer.xml的方法名对应

*/

public void deleteEmployeer(int id);

/**

* 注意要和Employeer.xml的方法名对应

*/

public void updateEmployeer(Employeer employeer);

}

5、测试:

(1)增加命令

上一讲【Mybatis】Mybatis入门概述及第一个Mybatis实例实现增删改查 中的方式:

/**

* 增加

*/

public static void addEmployeer(Employeer employeer){

SqlSession session = null;

try {

session = sqlSessionFactory.openSession();

//返回值是记录条数

int resultCount = session.insert("com.mucfc.model.EmployeerMapper.addEmployeer", employeer );

System.out.printf("当前插入的employeer_id :%d 当前插入数据库中条数:%d " , employeer.getEmployeer_id() ,resultCount); //获取插入对象的id

System.out.println("");

session.commit() ;

} finally {

session.close();

}

}

改成以接口编程的方式:

/**

* 增加

*/

public static void addEmployeer(Employeer employeer){

SqlSession session = null;

try {

session = sqlSessionFactory.openSession();

EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class);

employeerMapper.addEmployeer(employeer);

session.commit() ;

} finally {

session.close();

}

}

(2)删除命令

上一讲【Mybatis】Mybatis入门概述及第一个Mybatis实例实现增删改查 中的方式:

/**

* 删除

*

*/

public static void deleteEmployeer(int id){

SqlSession session = null;

try {

session = sqlSessionFactory.openSession();

//返回值是记录条数

int resultCount=session.delete("com.mucfc.model.EmployeerMapper.deleteEmployeer",id);

System.out.println("当前删除数据库中条数: "+resultCount); //获取插入对象的id

session.commit() ;

} finally {

session.close();

}

}

改成以接口编程的方式:

/**

* 删除

*

*/

public static void deleteEmployeer(int id){

SqlSession session = null;

try {

session = sqlSessionFactory.openSession();

EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class);

employeerMapper.deleteEmployeer(id);

session.commit() ;

} finally {

session.close();

}

}

(3)查找命令

上一讲【Mybatis】Mybatis入门概述及第一个Mybatis实例实现增删改查 中的方式:

/**

* 查找

*/

public static void findEmployeerById(int id) {

SqlSession session = null;

try {

session = sqlSessionFactory.openSession();

Employeer employeer = (Employeer) session.selectOne(

"com.mucfc.model.EmployeerMapper.findEmployeerByID", 1);

if (employeer == null)

System.out.println("null");

else

System.out.println(employeer);

} finally {

session.close();

}

}

改成以接口编程的方式:

/**

* 查找

*/

public static void findEmployeerById(int id) {

SqlSession session = null;

try {

session = sqlSessionFactory.openSession();

EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class);

Employeer employeer=employeerMapper.findEmployeerByID(id);

if (employeer == null)

System.out.println("null");

else

System.out.println(employeer);

} finally {

session.close();

}

}

(4)修改命令

上一讲【Mybatis】Mybatis入门概述及第一个Mybatis实例实现增删改查 中的方式:

/**

* 更改

*/

public static void updateEmployeer(Employeer employeer){

SqlSession session = null;

try {

session = sqlSessionFactory.openSession();

session.update("com.mucfc.model.EmployeerMapper.updateEmployeer",employeer);

session.commit() ;

} finally {

session.close();

}

}

改成以接口编程的方式:

/**

* 更改

*/

public static void updateEmployeer(Employeer employeer){

SqlSession session = null;

try {

session = sqlSessionFactory.openSession();

EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class);

employeerMapper.updateEmployeer(employeer);

session.commit() ;

} finally {

session.close();

}

}

这是一个完整的测试:

package com.mucfc.test;

import java.io.IOException;

import java.io.Reader;

import org.apache.ibatis.io.Resources;

import org.apache.ibatis.session.SqlSession;

import org.apache.ibatis.session.SqlSessionFactory;

import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import com.mucfc.mapper.EmployeerMapper;

import com.mucfc.model.Employeer;

public class MybatisTest {

private static SqlSessionFactory sqlSessionFactory;

private static Reader reader;

static {

try {

reader = Resources.getResourceAsReader("mybatis-config.xml");

sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 查找

*/

public static void findEmployeerById(int id) {

SqlSession session = null;

try {

session = sqlSessionFactory.openSession();

EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class);

Employeer employeer=employeerMapper.findEmployeerByID(id);

if (employeer == null)

System.out.println("null");

else

System.out.println(employeer);

} finally {

session.close();

}

}

/**

* 增加

*/

public static void addEmployeer(Employeer employeer){

SqlSession session = null;

try {

session = sqlSessionFactory.openSession();

EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class);

employeerMapper.addEmployeer(employeer);

session.commit() ;

} finally {

session.close();

}

}

/**

* 删除

*

*/

public static void deleteEmployeer(int id){

SqlSession session = null;

try {

session = sqlSessionFactory.openSession();

EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class);

employeerMapper.deleteEmployeer(id);

session.commit() ;

} finally {

session.close();

}

}

/**

* 更改

*/

public static void updateEmployeer(Employeer employeer){

SqlSession session = null;

try {

session = sqlSessionFactory.openSession();

EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class);

employeerMapper.updateEmployeer(employeer);

session.commit() ;

} finally {

session.close();

}

}

public static void main(String[] args) {

Employeer employeer1=new Employeer();

employeer1.setEmployeer_name("李四");

employeer1.setEmployeer_age(23);

employeer1.setEmployeer_department("产品一部");

employeer1.setEmployeer_worktype("开发工程师");

Employeer employeer2=new Employeer();

employeer2.setEmployeer_name("张三");

employeer2.setEmployeer_age(30);

employeer2.setEmployeer_department("产品二部");

employeer2.setEmployeer_worktype("测试工程师");

Employeer employeer3=new Employeer();

employeer3.setEmployeer_name("小王");

employeer3.setEmployeer_age(22);

employeer3.setEmployeer_department("产品三部");

employeer3.setEmployeer_worktype("数据分析师");

Employeer employeer4=new Employeer();

employeer4.setEmployeer_name("明明");

employeer4.setEmployeer_age(22);

employeer4.setEmployeer_department("财会部");

employeer4.setEmployeer_worktype("财务人员");

//插入

addEmployeer(employeer1);

addEmployeer(employeer2);

addEmployeer(employeer3);

addEmployeer(employeer4);

findEmployeerById(26);

deleteEmployeer(27);

//更改

employeer2.setEmployeer_id(28);

employeer2.setEmployeer_age(21);

employeer2.setEmployeer_department("产品四部");

updateEmployeer(employeer2);

}

}

测试结果:

插入了4条数据,ID为25~28

然后27号被删除

29号被修改

Mybatis接口编程方式实现增删改查

相关推荐