增删改查具体代码
    实体类:
    image.png
    持久层接口:

    1. public interface EmpMapper {
    2. /**
    3. * 查询所有员工数据
    4. */
    5. List<Emp> findAllByEmp();
    6. /**
    7. * 根据id来删除员工数据
    8. */
    9. int deleteEmpById(Emp emp);
    10. /**
    11. * 根据id来修改员工数据
    12. */
    13. int updateEmpById(Emp emp);
    14. /**
    15. * 添加员工数据,返回当前记录所对应的主键id
    16. */
    17. int addEmp(Emp emp);
    18. /**
    19. * 跟据员工姓名来实现模糊查询的功能
    20. */
    21. List<Emp> likeEmpName(String name);
    22. /**
    23. * 求员工的总个数
    24. */
    25. int getCountEmp();
    26. }

    EmpMapper.xml

    1. <?xml version="1.0" encoding="UTF-8" ?>
    2. <!DOCTYPE mapper
    3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    5. <mapper namespace="com.jy.mapper.EmpMapper">
    6. <!--
    7. resultMap :建立起实体字段和表字段的对应关系
    8. -->
    9. <resultMap id="empVo" type="com.jy.pojo.Emp">
    10. <!--匹配主键字段-->
    11. <id property="eid" column="eid"></id>
    12. <!--匹配非主键字段-->
    13. <result property="eName" column="e_name"></result>
    14. <result property="age" column="age"></result>
    15. <result property="sex" column="sex"></result>
    16. <result property="salary" column="salary"></result>
    17. <result property="birthday" column="birthday"></result>
    18. </resultMap>
    19. <!--查询所有员工数据-->
    20. <select id="findAllByEmp" resultMap="empVo">
    21. select * from test04
    22. </select>
    23. <!--根据id来删除员工数据-->
    24. <!--
    25. OGM表达式:#{} 可以取到实体中某一个字段的值,在执行sql的时候,可以防止sql注入
    26. el表达式:${}
    27. -->
    28. <delete id="deleteEmpById" parameterType="com.jy.pojo.Emp">
    29. delete from test04 where eid = #{eid}
    30. </delete>
    31. <!--根据id来修改员工数据-->
    32. <update id="updateEmpById" parameterType="com.jy.pojo.Emp">
    33. update test04 set
    34. e_name = #{eName},
    35. age = #{age},
    36. sex = #{sex},
    37. salary = #{salary},
    38. birthday = #{birthday}
    39. where eid = #{eid}
    40. </update>
    41. <!--添加员工-->
    42. <!--
    43. SELECT LAST_INSERT_ID() 查询最新被插入的数据的主键id
    44. selectKey 查询主键的标签 keyProperty 实体类属性名
    45. keyColumn 表中字段名 order 表示在插入之前查询还是之后查询
    46. resultType 返回值类型
    47. -->
    48. <insert id="addEmp" parameterType="com.jy.pojo.Emp">
    49. <selectKey keyProperty="eid" keyColumn="eid" order="AFTER" resultType="int">
    50. SELECT LAST_INSERT_ID()
    51. </selectKey>
    52. insert into test04 (
    53. e_name,
    54. age,
    55. sex,
    56. salary,
    57. birthday
    58. )values (
    59. #{eName},
    60. #{age},
    61. #{sex},
    62. #{salary},
    63. #{birthday}
    64. )
    65. </insert>
    66. <!--根据员工姓名来实现模糊查询的功能-->
    67. <select id="likeEmpName" parameterType="string" resultMap="empVo">
    68. select * from test04 where e_name like '%${value}%'
    69. </select>
    70. <!-- &lt;!&ndash;根据员工姓名来实现模糊查询的功能&ndash;&gt;
    71. <select id="likeEmpName" parameterType="java.lang.String" resultMap="empVo">
    72. select * from tb_emp where emp_name like #{qqqqqqq}
    73. </select>-->
    74. <!--求员工的总个数-->
    75. <select id="getCountEmp" resultType="int">
    76. select count(*) from test04
    77. </select>
    78. </mapper>

    测试类:

    1. public class MyBatisTest02 {
    2. InputStream resourceAsStream =null;
    3. SqlSessionFactory sqlSessionFactory = null;
    4. SqlSession sqlSession = null;
    5. EmpMapper empMapper = null;
    6. /**
    7. * @Before 会在所有的测试单元执行之前执行
    8. */
    9. @Before
    10. public void mybatisBefore(){
    11. //根据流对象来解析mybatis核心配置文件,读取相关数据
    12. try {
    13. resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");
    14. } catch (IOException e) {
    15. e.printStackTrace();
    16. }
    17. //创建sqlSessionFactory对象
    18. sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
    19. //将sqlSession对象从工厂取出来
    20. sqlSession = sqlSessionFactory.openSession();
    21. //创建代理对象
    22. empMapper = sqlSession.getMapper(EmpMapper.class);
    23. }
    24. /**
    25. * @After 会在所有的测试单元执行之后执行
    26. */
    27. @After
    28. public void mybatisAfter(){
    29. sqlSession.commit();
    30. try {
    31. resourceAsStream.close();
    32. sqlSession.close();
    33. } catch (IOException e) {
    34. e.printStackTrace();
    35. }
    36. }
    37. @Test
    38. public void test01(){
    39. List<Emp> allByEmp = empMapper.findAllByEmp();
    40. for (Emp emp : allByEmp) {
    41. System.out.println(emp);
    42. }
    43. }
    44. /**
    45. * 测试删除数据
    46. * 可以通过sqlSession调用delete方法进行删除,因为通过Mapper映射找到对应sql执行,
    47. * 其底层也是使用的IBatis中SqlSession通过Update、Select、Insert、Delete等方法操作。
    48. * 但MyBatis更建议使用Mapper,因为这更优雅
    49. * int i = sqlSession.delete("com.jy.mapper.EmpMapper.deleteEmpById", 5);
    50. */
    51. @Test
    52. public void test02(){
    53. //创建emp对象
    54. Emp emp = new Emp();
    55. emp.setEid(5);
    56. int num = empMapper.deleteEmpById(emp);
    57. System.out.println(num == 1 ? "删除成功":"删除失败");
    58. }
    59. /**
    60. * 测试修改功能
    61. */
    62. @Test
    63. public void test03(){
    64. //创建emp对象
    65. Emp emp = new Emp();
    66. emp.setEid(3);
    67. emp.seteName("小花哈哈哈");
    68. emp.setSalary(4000);
    69. emp.setAge(20);
    70. emp.setSex(2);
    71. emp.setBirthday("2021-3-1");
    72. int num = empMapper.updateEmpById(emp);
    73. System.out.println(num == 1 ? "修改成功" : "修改失败");
    74. }
    75. /**
    76. * 测试添加功能
    77. */
    78. @Test
    79. public void test04(){
    80. //创建emp对象
    81. Emp emp = new Emp();
    82. emp.seteName("小铭11");
    83. emp.setSalary(7000);
    84. emp.setAge(28);
    85. emp.setSex(1);
    86. emp.setBirthday("2021-5-1");
    87. System.out.println("添加之前 "+emp);
    88. int num = empMapper.addEmp(emp);
    89. System.out.println(num == 1 ? "添加成功" : "添加失败");
    90. System.out.println("添加之后 "+emp);
    91. }
    92. /**
    93. * 测试模糊查询功能
    94. */
    95. @Test
    96. public void test05(){
    97. List<Emp> empList = empMapper.likeEmpName("铭");
    98. for (Emp emp : empList) {
    99. System.out.println(emp);
    100. }
    101. }
    102. /**
    103. * 测试求总记录条数
    104. */
    105. @Test
    106. public void test06(){
    107. int countEmp = empMapper.getCountEmp();
    108. System.out.println("员工总个数为 "+countEmp);
    109. }
    110. }

    在mybatis的配置文件中,一定要配置映射器
    image.png