zoukankan      html  css  js  c++  java
  • 通用Mapper(三)基本增删改查测试

    一、基本查询

      1、selectOne(T record)

        说明:根据实体中的属性进行查询,只能有一个返回值,有多个结果是抛出异常,查询条件使用等号

        案例:

        /**
         * SELECT emp_id,emp_name,emp_salary,emp_age FROM tabple_emp WHERE emp_id = ?
         */
        @Test
        public void testSelectOne() {
            //1.创建封装查询条件的实体类对象
            Employee employeeQueryCondition = new Employee(1, null, null,null);
            //2. 执行查询
            Employee result = employeeService.getOne(employeeQueryCondition);
            //3.打印结果
            System.out.println("result = " + result);
        }
        public Employee getOne(Employee employeeQueryCondition) {
            return employeeMapper.selectOne(employeeQueryCondition);
        }

         selectOne() 方法

        通用Mapper替我们自动生成SQL语句情况

        实体类封装查询条件生成的where子句的规则

          ① 使用非空的值生成 where 子句;

          ② 在条件表达式中使用  "=" 进行比较

        要求必须返回一个实体类结果,如果有多个,则会抛出异常

      2、select(T record)

        说明:根据实体中的属性值进行查询,查询条件使用等号

        案例:

        /**
         * SELECT emp_id,emp_name,emp_salary,emp_age FROM tabple_emp
         */
        @Test
        public void testSelect() {
            //1.创建封装查询条件的实体类对象
            Employee employeeQueryCondition = new Employee(null, null, null,null);
            //2. 执行查询
            List<Employee> list = employeeService.select(employeeQueryCondition);
            //3.打印结果
            list.forEach(System.out::println);
        }
        public List<Employee> select(Employee employeeQueryCondition) {
            return employeeMapper.select(employeeQueryCondition);
        }

      3、selectAll()

        说明:查询全部结果

        案例:

        /**
         * SELECT emp_id,emp_name,emp_salary,emp_age FROM tabple_emp
         */
        @Test
        public void testSelectAll() {
            //1.查询所有的记录
            List<Employee> list = employeeService.getAll();
            //2.打印结果
            list.forEach(System.out::println);
        }
        public List<Employee> getAll() {
            return employeeMapper.selectAll();
        }

      4、selectCount(T record)

        说明:根据实体中的属性查询总数,查询条件使用等号

        案例:

        /**
         * SELECT COUNT(emp_id) FROM tabple_emp WHERE emp_id = ?
         */
        @Test
        public void testSelectCount() {
            //1.创建封装查询条件的实体类对象
            Employee employeeQueryCondition = new Employee(1, null, null,null);
            //2. 执行查询
            Integer count = employeeService.getCount(employeeQueryCondition);
            //3.打印结果
            System.out.println("count = " + count);
        }
        public Integer getCount(Employee employeeQueryCondition) {
            return employeeMapper.selectCount(employeeQueryCondition);
        }

      5、selectByPrimaryKey(Object key)

        说明:根据主键字段进行查询,方法参数必须包含完整的主键属性,查询条件使用等号

        案例:

        /**
         * SELECT emp_id,emp_name,emp_salary,emp_age FROM tabple_emp WHERE emp_id = ?
         */
        @Test
        public void testSelectByPrimaryKey() {
            //1.提供id值
            Integer id = 1;
            //2. 执行根据主键进行的查询
            Employee result = employeeService.getEmployeeById(id);
            //3.打印结果
            System.out.println("result = " + result);
        }
        public Employee getEmployeeById(Integer id) {
            return employeeMapper.selectByPrimaryKey(id);
        }

        注意:需要使用@Id 主键明确标记和数据库主键字段对应的实体类字段,否则通用Mapper会将所有实体类字段作为联合主键。

      6、existWithPrimaryKey(Object key)

        说明:根据主键字段查询总数,方法参数必须包含完整的主键属性,查询条件使用等号

        案例:

        /**
         * SELECT CASE WHEN COUNT(emp_id) > 0 THEN 1 ELSE 0 END AS result FROM tabple_emp WHERE emp_id = ?
         */
        @Test
        public void testExistsWithPrimaryKey() {
            //1.提供id值
            Integer id = 1;
            //2. 执行根据主键进行的查询
            boolean exists = employeeService.isExists(id);
            //3.打印结果
            System.out.println("exists = " + exists);
        }
        public boolean isExists(Integer id) {
            return employeeMapper.existsWithPrimaryKey(id);
        }

    二、基本插入

      1、insert(T record)

        说明:保存一个实体,null的属性也会保存,不会使用数据库默认值

        案例:

        @Test
        public void testInsert() {
            //1.创建实体类对象,封装要保存到数据库的对象
            Employee emp1 = new Employee(null, "emp03", 1000.00, 23);
            //2. 执行插入保存操作
            Integer result = employeeService.saveEmp(emp1);
            //3.打印结果
            System.out.println("result = " + result);
            //4.获取 emp1 对象的主键字段
            System.out.println("EmpId=" + emp1.getEmpId());
        }
        public Integer saveEmp(Employee emp) {
            return employeeMapper.insert(emp);
        }

      2、insertSelective(T record)

        说明:保存一个实体,null的属性不会保存,会使用数据库默认值

        案例:

        @Test
        public void testInsertSelective() {
            //1.创建实体类对象,封装要保存到数据库的对象
            Employee emp1 = new Employee(null, "emp04", null, 23);
            //2. 执行插入保存操作
            Integer result = employeeService.saveEmpSelective(emp1);
            //3.打印结果
            System.out.println("result = " + result);
            //4.获取 emp1 对象的主键字段
            System.out.println("EmpId=" + emp1.getEmpId());
        }
        public Integer saveEmpSelective(Employee emp) {
            return employeeMapper.insertSelective(emp);
        }

      注意:如果要获取实体类的主键字段需要在字段上面加上@GeneratedValue(strategy = GenerationType.IDENTITY),数据库需要支持主键自增

    三、基本更新

      1、updateByPrimarkKey(T record)

        说明:根据主键更新实体全部字段,null也会被更新

        案例:

        /**
         * UPDATE tabple_emp SET emp_id = emp_id,emp_name = ?,emp_salary = ?,emp_age = ? WHERE emp_id = ?
         */
        @Test
        public void testUpdateByPrimaryKey() {
            //1.创建用于测试的实体类
            Employee emp = new Employee(8, "empNewName", 100.00, 23);
            //2. 执行更新
            Integer result = employeeService.updateEmployee(emp);
            //3.打印结果
            System.out.println("result = " + result);
            System.out.println(emp);
        }
    
        public Integer updateEmployee(Employee emp) {
            return employeeMapper.updateByPrimaryKey(emp);
        }

      2、updateByPrimaryKeySelective(T record)

        说明:根据主键更新属性不为null的值

        案例:

        /**
         *  UPDATE tabple_emp SET emp_id = emp_id,emp_name = ?,emp_age = ? WHERE emp_id = ?
         *  只会修改非空的字段信息,其他没有传递的字段信息保持不变
         */
        @Test
        public void testUpdateByPrimaryKeySelective() {
            //1.创建用于测试的实体类
            Employee emp = new Employee(9, "empNewName", null, 23);
            //2. 执行更新
            Integer result = employeeService.updateEmployeeSelective(emp);
            //3.打印结果
            System.out.println("result = " + result);
        }
        public Integer updateEmployeeSelective(Employee emp) {
            return employeeMapper.updateByPrimaryKeySelective(emp);
        }

    四、基本删除

      1、delete(T record) 方法

        说明:根据实体属性作为条件进行删除,查询条件使用等号

        案例:

        @Test
        public void testDelete() {
            //1.声明实体类变量作为查询条件
            Employee emp = null;
            //2. 执行删除
            Integer result = employeeService.removeEmp(emp);
            //3.打印结果
            System.out.println("result = " + result);
        }
        public Integer removeEmp(Employee emp) {
            return employeeMapper.delete(emp);
        }

         执行的 SQL语句:

    delete from tabple_emp
    

      

      2、deleteByPrimaryKey(Object key)

        说明:根据主键字段进行删除,方法参数必须包含完整的主键属性

        案例:

        /**
         * DELETE FROM tabple_emp WHERE emp_id = ?
         */
        @Test
        public void testDeleteByPrimaryKey() {
            //1.提供主键值
            Integer id = 9;
            //2. 执行删除
            Integer result = employeeService.removeEmpById(id);
            //3.打印结果
            System.out.println("result = " + result);
        }
    
        public Integer removeEmpById(Integer id) {
            return employeeMapper.deleteByPrimaryKey(id);
        }
  • 相关阅读:
    在Windows上搭建Git Server
    Windows环境下Zookeeper 的安装与配置
    错误: 找不到或无法加载主类 org.apache.zookeeper.server.quorum.QuorumPeerMain
    windows环境搭建dubbo服务
    gunicorn 使用
    jQuery 插件autocomplete 应用
    PHP str_replace() 函数详解
    jQuery的deferred对象详解
    Elasticsearch tp5使用
    MySQL explain详解
  • 原文地址:https://www.cnblogs.com/niujifei/p/15269392.html
Copyright © 2011-2022 走看看