增删改查具体代码
实体类:
持久层接口:
public interface EmpMapper {/*** 查询所有员工数据*/List<Emp> findAllByEmp();/*** 根据id来删除员工数据*/int deleteEmpById(Emp emp);/*** 根据id来修改员工数据*/int updateEmpById(Emp emp);/*** 添加员工数据,返回当前记录所对应的主键id*/int addEmp(Emp emp);/*** 跟据员工姓名来实现模糊查询的功能*/List<Emp> likeEmpName(String name);/*** 求员工的总个数*/int getCountEmp();}
EmpMapper.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.jy.mapper.EmpMapper"><!--resultMap :建立起实体字段和表字段的对应关系--><resultMap id="empVo" type="com.jy.pojo.Emp"><!--匹配主键字段--><id property="eid" column="eid"></id><!--匹配非主键字段--><result property="eName" column="e_name"></result><result property="age" column="age"></result><result property="sex" column="sex"></result><result property="salary" column="salary"></result><result property="birthday" column="birthday"></result></resultMap><!--查询所有员工数据--><select id="findAllByEmp" resultMap="empVo">select * from test04</select><!--根据id来删除员工数据--><!--OGM表达式:#{} 可以取到实体中某一个字段的值,在执行sql的时候,可以防止sql注入el表达式:${}--><delete id="deleteEmpById" parameterType="com.jy.pojo.Emp">delete from test04 where eid = #{eid}</delete><!--根据id来修改员工数据--><update id="updateEmpById" parameterType="com.jy.pojo.Emp">update test04 sete_name = #{eName},age = #{age},sex = #{sex},salary = #{salary},birthday = #{birthday}where eid = #{eid}</update><!--添加员工--><!--SELECT LAST_INSERT_ID() 查询最新被插入的数据的主键idselectKey 查询主键的标签 keyProperty 实体类属性名keyColumn 表中字段名 order 表示在插入之前查询还是之后查询resultType 返回值类型--><insert id="addEmp" parameterType="com.jy.pojo.Emp"><selectKey keyProperty="eid" keyColumn="eid" order="AFTER" resultType="int">SELECT LAST_INSERT_ID()</selectKey>insert into test04 (e_name,age,sex,salary,birthday)values (#{eName},#{age},#{sex},#{salary},#{birthday})</insert><!--根据员工姓名来实现模糊查询的功能--><select id="likeEmpName" parameterType="string" resultMap="empVo">select * from test04 where e_name like '%${value}%'</select><!-- <!–根据员工姓名来实现模糊查询的功能–><select id="likeEmpName" parameterType="java.lang.String" resultMap="empVo">select * from tb_emp where emp_name like #{qqqqqqq}</select>--><!--求员工的总个数--><select id="getCountEmp" resultType="int">select count(*) from test04</select></mapper>
测试类:
public class MyBatisTest02 {InputStream resourceAsStream =null;SqlSessionFactory sqlSessionFactory = null;SqlSession sqlSession = null;EmpMapper empMapper = null;/*** @Before 会在所有的测试单元执行之前执行*/@Beforepublic void mybatisBefore(){//根据流对象来解析mybatis核心配置文件,读取相关数据try {resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");} catch (IOException e) {e.printStackTrace();}//创建sqlSessionFactory对象sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);//将sqlSession对象从工厂取出来sqlSession = sqlSessionFactory.openSession();//创建代理对象empMapper = sqlSession.getMapper(EmpMapper.class);}/*** @After 会在所有的测试单元执行之后执行*/@Afterpublic void mybatisAfter(){sqlSession.commit();try {resourceAsStream.close();sqlSession.close();} catch (IOException e) {e.printStackTrace();}}@Testpublic void test01(){List<Emp> allByEmp = empMapper.findAllByEmp();for (Emp emp : allByEmp) {System.out.println(emp);}}/*** 测试删除数据* 可以通过sqlSession调用delete方法进行删除,因为通过Mapper映射找到对应sql执行,* 其底层也是使用的IBatis中SqlSession通过Update、Select、Insert、Delete等方法操作。* 但MyBatis更建议使用Mapper,因为这更优雅* int i = sqlSession.delete("com.jy.mapper.EmpMapper.deleteEmpById", 5);*/@Testpublic void test02(){//创建emp对象Emp emp = new Emp();emp.setEid(5);int num = empMapper.deleteEmpById(emp);System.out.println(num == 1 ? "删除成功":"删除失败");}/*** 测试修改功能*/@Testpublic void test03(){//创建emp对象Emp emp = new Emp();emp.setEid(3);emp.seteName("小花哈哈哈");emp.setSalary(4000);emp.setAge(20);emp.setSex(2);emp.setBirthday("2021-3-1");int num = empMapper.updateEmpById(emp);System.out.println(num == 1 ? "修改成功" : "修改失败");}/*** 测试添加功能*/@Testpublic void test04(){//创建emp对象Emp emp = new Emp();emp.seteName("小铭11");emp.setSalary(7000);emp.setAge(28);emp.setSex(1);emp.setBirthday("2021-5-1");System.out.println("添加之前 "+emp);int num = empMapper.addEmp(emp);System.out.println(num == 1 ? "添加成功" : "添加失败");System.out.println("添加之后 "+emp);}/*** 测试模糊查询功能*/@Testpublic void test05(){List<Emp> empList = empMapper.likeEmpName("铭");for (Emp emp : empList) {System.out.println(emp);}}/*** 测试求总记录条数*/@Testpublic void test06(){int countEmp = empMapper.getCountEmp();System.out.println("员工总个数为 "+countEmp);}}
在mybatis的配置文件中,一定要配置映射器
