zoukankan      html  css  js  c++  java
  • 通用mapper常用注解

    通用mapper的作用:

    自动实现单表的增删改查

    常用注解使用

    @Table

    作用:建立实体类和数据库表之间的对应关系。
    默认规则:实体类类名首字母小写作为表名。Employee 类→employee 表。
    用法:在@Table注解的 name 属性中指定目标数据库表的表名

    @Column

    作用:建立实体类字段和数据库表字段之间的对应关系。
    默认规则:
    实体类字段:驼峰式命名
    数据库表字段:使用“_”区分各个单词
    用法:在@Column 注解的 name 属性中指定目标字段的字段名

    @Id

    通用 Mapper 在执行 xxxByPrimaryKey(key)方法时,有两种情况。
    情况 1:没有使用@Id 注解明确指定主键字段
    SELECT emp_id,emp_name,emp_salary_apple,emp_age FROM tabple_emp WHERE emp_id = ?
    AND emp_name = ? AND emp_salary_apple = ? AND emp_age = ?
    之所以会生成上面这样的 WHERE 子句是因为通用 Mapper 将实体类中的所有
    字段都拿来放在一起作为联合主键。
    情况 2:使用@Id 主键明确标记和数据库表中主键字段对应的实体类字段

    @GeneratedValue

    作用:让通用 Mapper 在执行 insert 操作之后将数据库自动生成的主键值回写到实
    体类对象中。
    自增主键用法: @GeneratedValue(strategy = GenerationType.IDENTITY)

    @Transient

    用于标记不与数据库表字段对应的实体类字段。
    例:
    @Transient
    private String otherThings; //非数据库表中字段

    QBC查询

    概念

    Query By Criteria
    Criteria 是 Criterion 的复数形式。意思是:规则、标准、准则。在 SQL 语句中相当
    于查询条件。
    QBC 查询是将查询条件通过 Java 对象进行模块化封装。

    示例代码

    //目标:WHERE (emp_salary>? AND emp_age<?) OR (emp_salary<? AND emp_age>?)
    
    //1.创建 Example 对象
    Example example = new Example(Employee.class);
    
    //设置排序信息
    example.orderBy("empSalary").asc().orderBy("empAge").desc();
    
    //设置“去重”
    example.setDistinct(true);
    
    //设置 select 字段
    example.selectProperties("empName","empSalary");
    //***********************
    //2.通过 Example 对象创建 Criteria 对象
    
    Criteria criteria01 = example.createCriteria();
    Criteria criteria02 = example.createCriteria();
    
    //3.在两个 Criteria 对象中分别设置查询条件
    //property 参数:实体类的属性名
    //value 参数:实体类的属性值
    criteria01.andGreaterThan("empSalary", 3000).andLessThan("empAge", 25);
    criteria02.andLessThan("empSalary", 5000).andGreaterThan("empAge", 30);
    
    //4.使用 OR 关键词组装两个 Criteria 对象
    example.or(criteria02);
    
    //5.执行查询
    List<Employee> empList = employeeService.getEmpListByExample(example);
    for (Employee employee : empList) {
    System.out.println(employee);
    }
    

    增删改查

    
    @Service
    public class VirtualIpService {
      @Autowired
      IVirtualIPMapper vipMapper;
      public void test(){
        VirtualIpBean vipBean = new VirtualIpBean();
        vipBean.setBeginTime(new Date());
        //(1)mapper基础接口
        //select接口
          List<VirtualIpBean> vipList = vipMapper.select(vipBean);//根据实体中的属性值进行查询,查询条件使用等号
        VirtualIpBean vip = vipMapper.selectOne(vipBean);//根据实体中的属性进行查询,只能有一个返回值,有多个结果是抛出异常,查询条件使用等号
        List<VirtualIpBean> vipList2 = vipMapper.selectAll();//查询全部结果,select(null)方法能达到同样的效果
        VirtualIpBean vip2 = vipMapper.selectByPrimaryKey(1);//根据主键字段进行查询,方法参数必须包含完整的主键属性,查询条件使用等号
        int count = vipMapper.selectCount(vipBean);//根据实体中的属性查询总数,查询条件使用等号
        //insert接口
        int a = vipMapper.insert(vipBean);//保存一个实体,null的属性也会保存,不会使用数据库默认值
        int a1 = vipMapper.insertSelective(vipBean);//保存实体,null的属性不会保存,会使用数据库默认值
        //update接口
        int b = vipMapper.updateByPrimaryKeySelective(vipBean);//根据主键更新属性不为null的值
        int c = vipMapper.updateByPrimaryKey(vipBean);//根据主键更新实体全部字段,null值会被更新
        //delete接口
        int d = vipMapper.delete(vipBean);//根据实体属性作为条件进行删除,查询条件使用等号
        int e = vipMapper.deleteByPrimaryKey(1);//根据主键字段进行删除,方法参数必须包含完整的主键属性
        //(2)Example方法
        Example example = new Example(VirtualIpBean.class);
        example.createCriteria().andEqualTo("id", 1);
        example.createCriteria().andLike("val", "1");
        //自定义查询
        List<VirtualIpBean> vipList3 = vipMapper.selectByExample(example);
      }
    }
    
  • 相关阅读:
    python 慕名函数
    python 不定长参数
    python 关键字参数
    python 传递参数
    python 函数的返回值
    python 函数的参数
    python 最简单的函数(无参无返回值)
    python 迭代器
    python 迭代器案例
    在 android 上运行 python 的方法
  • 原文地址:https://www.cnblogs.com/treasury/p/12652618.html
Copyright © 2011-2022 走看看