【Mybatis】Mybatis入门概述及第一个Mybatis实例实现增删改查 【Mybatis】Mybatis入门概述及第一个Mybatis实例实现增删改查 【Mybatis】Mybatis入门概述及第一个Mybatis实例实现增删改查 【Mybatis】Mybatis入门概述及第一个Mybatis实例实现增删改查 【Mybatis】Mybatis入门概述及第一个Mybatis实例实现增删改查

        林炳文Evankaka原创作品。转自https://blog.csdn.net/Evankaka/article/details/45670527

    前面一章【Mybatis】Mybatis入门概述及第一个Mybatis实例实现增删改查 ,已经搭建好了eclipse,mybatis,mysql的环境,并且实现了一个简单的查询。请注意,这种方式是用SqlSession实例来直接执行已映射的SQL语句:

session.selectOne("com.mucfc.model.EmployeerMapper.findEmployeerByID", 1);
    
    

其实还有更简单的方法,而且是更好的方法,使用合理描述参数和SQL语句返回值的接口(比如EmployeerMapper.java),这样现在就可以至此那个更简单,更安全的代码,没有容易发生的字符串文字和转换的错误.下面是详细过程:

本文要改成以接口类来实现增删改查

整个工程目录 :


本文示例工程免费下载

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


    
    
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <!-- 这是根标签 -->
  6. <configuration>
  7. <!-- 元素允许在主配置文件之外提供一个properties格式对应文件,从而使得主配置文件更加通用。这样对部署非常有用 -->
  8. <properties resource="mysql.properties" />
  9. <!-- 设置别名,一定要放在properties下面 -->
  10. <typeAliases>
  11. <typeAlias alias="Employeer" type="com.mucfc.model.Employeer" />
  12. </typeAliases>
  13. <!-- 配置数据源相关的信息 -->
  14. <environments default="development">
  15. <environment id="development">
  16. <transactionManager type="JDBC" />
  17. <dataSource type="POOLED">
  18. <!-- <property name="driver" value="com.mysql.jdbc.Driver"/>
  19. <property name="url" value="jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8"/>
  20. <property name="username" value="root"/>
  21. <property name="password" value="christmas258@"/> -->
  22. <property name="driver" value="${driver}" />
  23. <property name="url" value="${url}" />
  24. <property name="username" value="${username}" />
  25. <property name="password" value="${password}" />
  26. </dataSource>
  27. </environment>
  28. </environments>
  29. <!-- 列出映射文件 -->
  30. <mappers>
  31. <mapper resource="com/mucfc/model/Employeer.xml" />
  32. </mappers>
  33. </configuration>

其中配置文件mysql.properties


    
    
  1. driver=com.mysql.jdbc.Driver
  2. url=jdbc:mysql://localhost:3306/test?charset=utf8
  3. username=root
  4. password=christmas258@


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


    
    
  1. package com.mucfc.model;
  2. import java.io.Serializable;
  3. /**
  4. * 雇员信息类
  5. *@author linbingwen
  6. *@time 2015.5.11
  7. */
  8. public class Employeer {
  9. private Integer employeer_id;
  10. private String employeer_name;
  11. private Integer employeer_age ;
  12. private String employeer_department;
  13. private String employeer_worktype;
  14. public Employeer() {
  15. super();
  16. }
  17. public Integer getEmployeer_id() {
  18. return employeer_id;
  19. }
  20. public void setEmployeer_id(Integer employeer_id) {
  21. this.employeer_id = employeer_id;
  22. }
  23. public String getEmployeer_name() {
  24. return employeer_name;
  25. }
  26. public void setEmployeer_name(String employeer_name) {
  27. this.employeer_name = employeer_name;
  28. }
  29. public Integer getEmployeer_age() {
  30. return employeer_age;
  31. }
  32. public void setEmployeer_age(Integer employeer_age) {
  33. this.employeer_age = employeer_age;
  34. }
  35. public String getEmployeer_department() {
  36. return employeer_department;
  37. }
  38. public void setEmployeer_department(String employeer_department) {
  39. this.employeer_department = employeer_department;
  40. }
  41. public String getEmployeer_worktype() {
  42. return employeer_worktype;
  43. }
  44. public void setEmployeer_worktype(String employeer_worktype) {
  45. this.employeer_worktype = employeer_worktype;
  46. }
  47. @Override
  48. public String toString() {
  49. return "Employeer [employeer_id=" + employeer_id + ", employeer_name="
  50. + employeer_name + ", employeer_age=" + employeer_age
  51. + ", employeer_department=" + employeer_department
  52. + ", employeer_worktype=" + employeer_worktype + "]";
  53. }
  54. }
然后是SQL语句的配置Employeer.xml:


    
    
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  4. <mapper namespace="com.mucfc.mapper.EmployeerMapper">
  5. <!-- 查找 -->
  6. <select id="findEmployeerByID" parameterType="int" resultType="Employeer">
  7. select* from `t_employeer` where employeer_id =#{employeer_id}
  8. </select>
  9. <!-- 插入 -->
  10. <!-- useGeneratedKeys设置为"true"表明要MyBatis获取由数据库自动生成的主键;keyProperty="id"指定把获取到的主键值注入到Employeer的id属性 -->
  11. <insert id="addEmployeer" parameterType="Employeer"
  12. useGeneratedKeys= "true" keyProperty= "employeer_id">
  13. insert into `t_employeer`(employeer_name,employeer_age,employeer_department,employeer_worktype)
  14. values(#{employeer_name},#{employeer_age},#{employeer_department},#{employeer_worktype})
  15. </insert>
  16. <!-- 删除 -->
  17. <delete id="deleteEmployeer" parameterType="int">
  18. delete from `t_employeer` where employeer_id = #{employeer_id}
  19. </delete>
  20. <!-- 修改 -->
  21. <update id="updateEmployeer" parameterType="Employeer">
  22. update t_employeer set employeer_name = #{employeer_name},employeer_age= #{employeer_age},employeer_department = #{employeer_department}
  23. ,employeer_worktype=#{employeer_worktype} where employeer_id = #{employeer_id}
  24. </update>
  25. </mapper>

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

4、SQL语句映射类EmployeerMapper.java


    
    
  1. package com.mucfc.mapper;
  2. import com.mucfc.model.Employeer;
  3. /**
  4. * SQL语句映射类
  5. * @author linbingwen
  6. * @time 2015.5.11
  7. */
  8. public interface EmployeerMapper {
  9. /**
  10. * 注意要和Employeer.xml的方法名对应
  11. */
  12. public Employeer findEmployeerByID(int id);
  13. /**
  14. * 注意要和Employeer.xml的方法名对应
  15. */
  16. public void addEmployeer(Employeer employeer);
  17. /**
  18. * 注意要和Employeer.xml的方法名对应
  19. */
  20. public void deleteEmployeer(int id);
  21. /**
  22. * 注意要和Employeer.xml的方法名对应
  23. */
  24. public void updateEmployeer(Employeer employeer);
  25. }
5、测试:


(1)增加命令

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


    
    
  1. /**
  2. * 增加
  3. */
  4. public static void addEmployeer(Employeer employeer){
  5. SqlSession session = null;
  6. try {
  7. session = sqlSessionFactory.openSession();
  8. //返回值是记录条数
  9. int resultCount = session.insert( "com.mucfc.model.EmployeerMapper.addEmployeer", employeer );
  10. System.out.printf( "当前插入的employeer_id :%d 当前插入数据库中条数:%d " , employeer.getEmployeer_id() ,resultCount); //获取插入对象的id
  11. System.out.println( "");
  12. session.commit() ;
  13. } finally {
  14. session.close();
  15. }
  16. }


改成以接口编程的方式:


    
    
  1. /**
  2. * 增加
  3. */
  4. public static void addEmployeer(Employeer employeer){
  5. SqlSession session = null;
  6. try {
  7. session = sqlSessionFactory.openSession();
  8. EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class);
  9. employeerMapper.addEmployeer(employeer);
  10. session.commit() ;
  11. } finally {
  12. session.close();
  13. }
  14. }

(2)删除命令

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


    
    
  1. /**
  2. * 删除
  3. *
  4. */
  5. public static void deleteEmployeer(int id){
  6. SqlSession session = null;
  7. try {
  8. session = sqlSessionFactory.openSession();
  9. //返回值是记录条数
  10. int resultCount=session.delete( "com.mucfc.model.EmployeerMapper.deleteEmployeer",id);
  11. System.out.println( "当前删除数据库中条数: "+resultCount); //获取插入对象的id
  12. session.commit() ;
  13. } finally {
  14. session.close();
  15. }
  16. }


改成以接口编程的方式:


    
    
  1. /**
  2. * 删除
  3. *
  4. */
  5. public static void deleteEmployeer(int id){
  6. SqlSession session = null;
  7. try {
  8. session = sqlSessionFactory.openSession();
  9. EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class);
  10. employeerMapper.deleteEmployeer(id);
  11. session.commit() ;
  12. } finally {
  13. session.close();
  14. }
  15. }


(3)查找命令

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


    
    
  1. /**
  2. * 查找
  3. */
  4. public static void findEmployeerById(int id) {
  5. SqlSession session = null;
  6. try {
  7. session = sqlSessionFactory.openSession();
  8. Employeer employeer = (Employeer) session.selectOne(
  9. "com.mucfc.model.EmployeerMapper.findEmployeerByID", 1);
  10. if (employeer == null)
  11. System.out.println( "null");
  12. else
  13. System.out.println(employeer);
  14. } finally {
  15. session.close();
  16. }
  17. }


改成以接口编程的方式:


    
    
  1. /**
  2. * 查找
  3. */
  4. public static void findEmployeerById(int id) {
  5. SqlSession session = null;
  6. try {
  7. session = sqlSessionFactory.openSession();
  8. EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class);
  9. Employeer employeer=employeerMapper.findEmployeerByID(id);
  10. if (employeer == null)
  11. System.out.println( "null");
  12. else
  13. System.out.println(employeer);
  14. } finally {
  15. session.close();
  16. }
  17. }

(4)修改命令

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


    
    
  1. /**
  2. * 更改
  3. */
  4. public static void updateEmployeer(Employeer employeer){
  5. SqlSession session = null;
  6. try {
  7. session = sqlSessionFactory.openSession();
  8. session.update( "com.mucfc.model.EmployeerMapper.updateEmployeer",employeer);
  9. session.commit() ;
  10. } finally {
  11. session.close();
  12. }
  13. }


改成以接口编程的方式:


    
    
  1. /**
  2. * 更改
  3. */
  4. public static void updateEmployeer(Employeer employeer){
  5. SqlSession session = null;
  6. try {
  7. session = sqlSessionFactory.openSession();
  8. EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class);
  9. employeerMapper.updateEmployeer(employeer);
  10. session.commit() ;
  11. } finally {
  12. session.close();
  13. }
  14. }

这是一个完整的测试:


    
    
  1. package com.mucfc.test;
  2. import java.io.IOException;
  3. import java.io.Reader;
  4. import org.apache.ibatis.io.Resources;
  5. import org.apache.ibatis.session.SqlSession;
  6. import org.apache.ibatis.session.SqlSessionFactory;
  7. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  8. import com.mucfc.mapper.EmployeerMapper;
  9. import com.mucfc.model.Employeer;
  10. public class MybatisTest {
  11. private static SqlSessionFactory sqlSessionFactory;
  12. private static Reader reader;
  13. static {
  14. try {
  15. reader = Resources.getResourceAsReader( "mybatis-config.xml");
  16. sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
  17. } catch (Exception e) {
  18. e.printStackTrace();
  19. }
  20. }
  21. /**
  22. * 查找
  23. */
  24. public static void findEmployeerById(int id) {
  25. SqlSession session = null;
  26. try {
  27. session = sqlSessionFactory.openSession();
  28. EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class);
  29. Employeer employeer=employeerMapper.findEmployeerByID(id);
  30. if (employeer == null)
  31. System.out.println( "null");
  32. else
  33. System.out.println(employeer);
  34. } finally {
  35. session.close();
  36. }
  37. }
  38. /**
  39. * 增加
  40. */
  41. public static void addEmployeer(Employeer employeer){
  42. SqlSession session = null;
  43. try {
  44. session = sqlSessionFactory.openSession();
  45. EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class);
  46. employeerMapper.addEmployeer(employeer);
  47. session.commit() ;
  48. } finally {
  49. session.close();
  50. }
  51. }
  52. /**
  53. * 删除
  54. *
  55. */
  56. public static void deleteEmployeer(int id){
  57. SqlSession session = null;
  58. try {
  59. session = sqlSessionFactory.openSession();
  60. EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class);
  61. employeerMapper.deleteEmployeer(id);
  62. session.commit() ;
  63. } finally {
  64. session.close();
  65. }
  66. }
  67. /**
  68. * 更改
  69. */
  70. public static void updateEmployeer(Employeer employeer){
  71. SqlSession session = null;
  72. try {
  73. session = sqlSessionFactory.openSession();
  74. EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class);
  75. employeerMapper.updateEmployeer(employeer);
  76. session.commit() ;
  77. } finally {
  78. session.close();
  79. }
  80. }
  81. public static void main(String[] args) {
  82. Employeer employeer1= new Employeer();
  83. employeer1.setEmployeer_name( "李四");
  84. employeer1.setEmployeer_age( 23);
  85. employeer1.setEmployeer_department( "产品一部");
  86. employeer1.setEmployeer_worktype( "开发工程师");
  87. Employeer employeer2= new Employeer();
  88. employeer2.setEmployeer_name( "张三");
  89. employeer2.setEmployeer_age( 30);
  90. employeer2.setEmployeer_department( "产品二部");
  91. employeer2.setEmployeer_worktype( "测试工程师");
  92. Employeer employeer3= new Employeer();
  93. employeer3.setEmployeer_name( "小王");
  94. employeer3.setEmployeer_age( 22);
  95. employeer3.setEmployeer_department( "产品三部");
  96. employeer3.setEmployeer_worktype( "数据分析师");
  97. Employeer employeer4= new Employeer();
  98. employeer4.setEmployeer_name( "明明");
  99. employeer4.setEmployeer_age( 22);
  100. employeer4.setEmployeer_department( "财会部");
  101. employeer4.setEmployeer_worktype( "财务人员");
  102. //插入
  103. addEmployeer(employeer1);
  104. addEmployeer(employeer2);
  105. addEmployeer(employeer3);
  106. addEmployeer(employeer4);
  107. findEmployeerById( 26);
  108. deleteEmployeer( 27);
  109. //更改
  110. employeer2.setEmployeer_id( 28);
  111. employeer2.setEmployeer_age( 21);
  112. employeer2.setEmployeer_department( "产品四部");
  113. updateEmployeer(employeer2);
  114. }
  115. }

测试结果:

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

然后27号被删除

29号被修改


本文示例工程免费下载

        林炳文Evankaka原创作品。转自https://blog.csdn.net/Evankaka/article/details/45670527

    前面一章【Mybatis】Mybatis入门概述及第一个Mybatis实例实现增删改查 ,已经搭建好了eclipse,mybatis,mysql的环境,并且实现了一个简单的查询。请注意,这种方式是用SqlSession实例来直接执行已映射的SQL语句:

session.selectOne("com.mucfc.model.EmployeerMapper.findEmployeerByID", 1);
  
  

其实还有更简单的方法,而且是更好的方法,使用合理描述参数和SQL语句返回值的接口(比如EmployeerMapper.java),这样现在就可以至此那个更简单,更安全的代码,没有容易发生的字符串文字和转换的错误.下面是详细过程:

本文要改成以接口类来实现增删改查

整个工程目录 :


本文示例工程免费下载

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


  
  
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <!-- 这是根标签 -->
  6. <configuration>
  7. <!-- 元素允许在主配置文件之外提供一个properties格式对应文件,从而使得主配置文件更加通用。这样对部署非常有用 -->
  8. <properties resource="mysql.properties" />
  9. <!-- 设置别名,一定要放在properties下面 -->
  10. <typeAliases>
  11. <typeAlias alias="Employeer" type="com.mucfc.model.Employeer" />
  12. </typeAliases>
  13. <!-- 配置数据源相关的信息 -->
  14. <environments default="development">
  15. <environment id="development">
  16. <transactionManager type="JDBC" />
  17. <dataSource type="POOLED">
  18. <!-- <property name="driver" value="com.mysql.jdbc.Driver"/>
  19. <property name="url" value="jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8"/>
  20. <property name="username" value="root"/>
  21. <property name="password" value="christmas258@"/> -->
  22. <property name="driver" value="${driver}" />
  23. <property name="url" value="${url}" />
  24. <property name="username" value="${username}" />
  25. <property name="password" value="${password}" />
  26. </dataSource>
  27. </environment>
  28. </environments>
  29. <!-- 列出映射文件 -->
  30. <mappers>
  31. <mapper resource="com/mucfc/model/Employeer.xml" />
  32. </mappers>
  33. </configuration>

其中配置文件mysql.properties


  
  
  1. driver=com.mysql.jdbc.Driver
  2. url=jdbc:mysql://localhost:3306/test?charset=utf8
  3. username=root
  4. password=christmas258@


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


  
  
  1. package com.mucfc.model;
  2. import java.io.Serializable;
  3. /**
  4. * 雇员信息类
  5. *@author linbingwen
  6. *@time 2015.5.11
  7. */
  8. public class Employeer {
  9. private Integer employeer_id;
  10. private String employeer_name;
  11. private Integer employeer_age ;
  12. private String employeer_department;
  13. private String employeer_worktype;
  14. public Employeer() {
  15. super();
  16. }
  17. public Integer getEmployeer_id() {
  18. return employeer_id;
  19. }
  20. public void setEmployeer_id(Integer employeer_id) {
  21. this.employeer_id = employeer_id;
  22. }
  23. public String getEmployeer_name() {
  24. return employeer_name;
  25. }
  26. public void setEmployeer_name(String employeer_name) {
  27. this.employeer_name = employeer_name;
  28. }
  29. public Integer getEmployeer_age() {
  30. return employeer_age;
  31. }
  32. public void setEmployeer_age(Integer employeer_age) {
  33. this.employeer_age = employeer_age;
  34. }
  35. public String getEmployeer_department() {
  36. return employeer_department;
  37. }
  38. public void setEmployeer_department(String employeer_department) {
  39. this.employeer_department = employeer_department;
  40. }
  41. public String getEmployeer_worktype() {
  42. return employeer_worktype;
  43. }
  44. public void setEmployeer_worktype(String employeer_worktype) {
  45. this.employeer_worktype = employeer_worktype;
  46. }
  47. @Override
  48. public String toString() {
  49. return "Employeer [employeer_id=" + employeer_id + ", employeer_name="
  50. + employeer_name + ", employeer_age=" + employeer_age
  51. + ", employeer_department=" + employeer_department
  52. + ", employeer_worktype=" + employeer_worktype + "]";
  53. }
  54. }
然后是SQL语句的配置Employeer.xml:


  
  
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  4. <mapper namespace="com.mucfc.mapper.EmployeerMapper">
  5. <!-- 查找 -->
  6. <select id="findEmployeerByID" parameterType="int" resultType="Employeer">
  7. select* from `t_employeer` where employeer_id =#{employeer_id}
  8. </select>
  9. <!-- 插入 -->
  10. <!-- useGeneratedKeys设置为"true"表明要MyBatis获取由数据库自动生成的主键;keyProperty="id"指定把获取到的主键值注入到Employeer的id属性 -->
  11. <insert id="addEmployeer" parameterType="Employeer"
  12. useGeneratedKeys= "true" keyProperty= "employeer_id">
  13. insert into `t_employeer`(employeer_name,employeer_age,employeer_department,employeer_worktype)
  14. values(#{employeer_name},#{employeer_age},#{employeer_department},#{employeer_worktype})
  15. </insert>
  16. <!-- 删除 -->
  17. <delete id="deleteEmployeer" parameterType="int">
  18. delete from `t_employeer` where employeer_id = #{employeer_id}
  19. </delete>
  20. <!-- 修改 -->
  21. <update id="updateEmployeer" parameterType="Employeer">
  22. update t_employeer set employeer_name = #{employeer_name},employeer_age= #{employeer_age},employeer_department = #{employeer_department}
  23. ,employeer_worktype=#{employeer_worktype} where employeer_id = #{employeer_id}
  24. </update>
  25. </mapper>

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

4、SQL语句映射类EmployeerMapper.java


  
  
  1. package com.mucfc.mapper;
  2. import com.mucfc.model.Employeer;
  3. /**
  4. * SQL语句映射类
  5. * @author linbingwen
  6. * @time 2015.5.11
  7. */
  8. public interface EmployeerMapper {
  9. /**
  10. * 注意要和Employeer.xml的方法名对应
  11. */
  12. public Employeer findEmployeerByID(int id);
  13. /**
  14. * 注意要和Employeer.xml的方法名对应
  15. */
  16. public void addEmployeer(Employeer employeer);
  17. /**
  18. * 注意要和Employeer.xml的方法名对应
  19. */
  20. public void deleteEmployeer(int id);
  21. /**
  22. * 注意要和Employeer.xml的方法名对应
  23. */
  24. public void updateEmployeer(Employeer employeer);
  25. }
5、测试:


(1)增加命令

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


  
  
  1. /**
  2. * 增加
  3. */
  4. public static void addEmployeer(Employeer employeer){
  5. SqlSession session = null;
  6. try {
  7. session = sqlSessionFactory.openSession();
  8. //返回值是记录条数
  9. int resultCount = session.insert( "com.mucfc.model.EmployeerMapper.addEmployeer", employeer );
  10. System.out.printf( "当前插入的employeer_id :%d 当前插入数据库中条数:%d " , employeer.getEmployeer_id() ,resultCount); //获取插入对象的id
  11. System.out.println( "");
  12. session.commit() ;
  13. } finally {
  14. session.close();
  15. }
  16. }


改成以接口编程的方式:


  
  
  1. /**
  2. * 增加
  3. */
  4. public static void addEmployeer(Employeer employeer){
  5. SqlSession session = null;
  6. try {
  7. session = sqlSessionFactory.openSession();
  8. EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class);
  9. employeerMapper.addEmployeer(employeer);
  10. session.commit() ;
  11. } finally {
  12. session.close();
  13. }
  14. }

(2)删除命令

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


  
  
  1. /**
  2. * 删除
  3. *
  4. */
  5. public static void deleteEmployeer(int id){
  6. SqlSession session = null;
  7. try {
  8. session = sqlSessionFactory.openSession();
  9. //返回值是记录条数
  10. int resultCount=session.delete( "com.mucfc.model.EmployeerMapper.deleteEmployeer",id);
  11. System.out.println( "当前删除数据库中条数: "+resultCount); //获取插入对象的id
  12. session.commit() ;
  13. } finally {
  14. session.close();
  15. }
  16. }


改成以接口编程的方式:


  
  
  1. /**
  2. * 删除
  3. *
  4. */
  5. public static void deleteEmployeer(int id){
  6. SqlSession session = null;
  7. try {
  8. session = sqlSessionFactory.openSession();
  9. EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class);
  10. employeerMapper.deleteEmployeer(id);
  11. session.commit() ;
  12. } finally {
  13. session.close();
  14. }
  15. }


(3)查找命令

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


  
  
  1. /**
  2. * 查找
  3. */
  4. public static void findEmployeerById(int id) {
  5. SqlSession session = null;
  6. try {
  7. session = sqlSessionFactory.openSession();
  8. Employeer employeer = (Employeer) session.selectOne(
  9. "com.mucfc.model.EmployeerMapper.findEmployeerByID", 1);
  10. if (employeer == null)
  11. System.out.println( "null");
  12. else
  13. System.out.println(employeer);
  14. } finally {
  15. session.close();
  16. }
  17. }


改成以接口编程的方式:


  
  
  1. /**
  2. * 查找
  3. */
  4. public static void findEmployeerById(int id) {
  5. SqlSession session = null;
  6. try {
  7. session = sqlSessionFactory.openSession();
  8. EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class);
  9. Employeer employeer=employeerMapper.findEmployeerByID(id);
  10. if (employeer == null)
  11. System.out.println( "null");
  12. else
  13. System.out.println(employeer);
  14. } finally {
  15. session.close();
  16. }
  17. }

(4)修改命令

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


  
  
  1. /**
  2. * 更改
  3. */
  4. public static void updateEmployeer(Employeer employeer){
  5. SqlSession session = null;
  6. try {
  7. session = sqlSessionFactory.openSession();
  8. session.update( "com.mucfc.model.EmployeerMapper.updateEmployeer",employeer);
  9. session.commit() ;
  10. } finally {
  11. session.close();
  12. }
  13. }


改成以接口编程的方式:


  
  
  1. /**
  2. * 更改
  3. */
  4. public static void updateEmployeer(Employeer employeer){
  5. SqlSession session = null;
  6. try {
  7. session = sqlSessionFactory.openSession();
  8. EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class);
  9. employeerMapper.updateEmployeer(employeer);
  10. session.commit() ;
  11. } finally {
  12. session.close();
  13. }
  14. }

这是一个完整的测试:


  
  
  1. package com.mucfc.test;
  2. import java.io.IOException;
  3. import java.io.Reader;
  4. import org.apache.ibatis.io.Resources;
  5. import org.apache.ibatis.session.SqlSession;
  6. import org.apache.ibatis.session.SqlSessionFactory;
  7. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  8. import com.mucfc.mapper.EmployeerMapper;
  9. import com.mucfc.model.Employeer;
  10. public class MybatisTest {
  11. private static SqlSessionFactory sqlSessionFactory;
  12. private static Reader reader;
  13. static {
  14. try {
  15. reader = Resources.getResourceAsReader( "mybatis-config.xml");
  16. sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
  17. } catch (Exception e) {
  18. e.printStackTrace();
  19. }
  20. }
  21. /**
  22. * 查找
  23. */
  24. public static void findEmployeerById(int id) {
  25. SqlSession session = null;
  26. try {
  27. session = sqlSessionFactory.openSession();
  28. EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class);
  29. Employeer employeer=employeerMapper.findEmployeerByID(id);
  30. if (employeer == null)
  31. System.out.println( "null");
  32. else
  33. System.out.println(employeer);
  34. } finally {
  35. session.close();
  36. }
  37. }
  38. /**
  39. * 增加
  40. */
  41. public static void addEmployeer(Employeer employeer){
  42. SqlSession session = null;
  43. try {
  44. session = sqlSessionFactory.openSession();
  45. EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class);
  46. employeerMapper.addEmployeer(employeer);
  47. session.commit() ;
  48. } finally {
  49. session.close();
  50. }
  51. }
  52. /**
  53. * 删除
  54. *
  55. */
  56. public static void deleteEmployeer(int id){
  57. SqlSession session = null;
  58. try {
  59. session = sqlSessionFactory.openSession();
  60. EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class);
  61. employeerMapper.deleteEmployeer(id);
  62. session.commit() ;
  63. } finally {
  64. session.close();
  65. }
  66. }
  67. /**
  68. * 更改
  69. */
  70. public static void updateEmployeer(Employeer employeer){
  71. SqlSession session = null;
  72. try {
  73. session = sqlSessionFactory.openSession();
  74. EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class);
  75. employeerMapper.updateEmployeer(employeer);
  76. session.commit() ;
  77. } finally {
  78. session.close();
  79. }
  80. }
  81. public static void main(String[] args) {
  82. Employeer employeer1= new Employeer();
  83. employeer1.setEmployeer_name( "李四");
  84. employeer1.setEmployeer_age( 23);
  85. employeer1.setEmployeer_department( "产品一部");
  86. employeer1.setEmployeer_worktype( "开发工程师");
  87. Employeer employeer2= new Employeer();
  88. employeer2.setEmployeer_name( "张三");
  89. employeer2.setEmployeer_age( 30);
  90. employeer2.setEmployeer_department( "产品二部");
  91. employeer2.setEmployeer_worktype( "测试工程师");
  92. Employeer employeer3= new Employeer();
  93. employeer3.setEmployeer_name( "小王");
  94. employeer3.setEmployeer_age( 22);
  95. employeer3.setEmployeer_department( "产品三部");
  96. employeer3.setEmployeer_worktype( "数据分析师");
  97. Employeer employeer4= new Employeer();
  98. employeer4.setEmployeer_name( "明明");
  99. employeer4.setEmployeer_age( 22);
  100. employeer4.setEmployeer_department( "财会部");
  101. employeer4.setEmployeer_worktype( "财务人员");
  102. //插入
  103. addEmployeer(employeer1);
  104. addEmployeer(employeer2);
  105. addEmployeer(employeer3);
  106. addEmployeer(employeer4);
  107. findEmployeerById( 26);
  108. deleteEmployeer( 27);
  109. //更改
  110. employeer2.setEmployeer_id( 28);
  111. employeer2.setEmployeer_age( 21);
  112. employeer2.setEmployeer_department( "产品四部");
  113. updateEmployeer(employeer2);
  114. }
  115. }

测试结果:

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

然后27号被删除

29号被修改


本文示例工程免费下载

猜你喜欢

转载自blog.csdn.net/weixin_42581112/article/details/88895870