MyBatis-Plus 用起来真的很舒服( 三 )


@Datapublic static class DbConfig {    /**      * 主键类型      */    private IdType idType = IdType.ASSIGN_ID;}

MyBatis-Plus 用起来真的很舒服

文章插图
 
在源码中找到这样一段配置,说明MyBatisPlus默认的主键策略是 分配ID ,所以我们需要将其配置为主键自增:
mybatis-plus:  global-config:    db-config:      id-type: auto
MyBatis-Plus 用起来真的很舒服

文章插图
 
表名的映射也可以进行全局配置:
mybatis-plus:  global-config:    db-config:      id-type: auto           table-prefix: tbl_
MyBatis-Plus 用起来真的很舒服

文章插图
 
此时就可以将实体类上的@TableId和@TableName注解去掉了 。
驼峰命名映射只能解决诸如lastName和last_name的映射关系,当两者差别过大时,比如:lastName和name,此时我们需要使用@TableField注解来解决:
@TableField(value = "name")private String lastName;
MyBatis-Plus 用起来真的很舒服

文章插图
 
但通常情况下数据表的列名和实体类的属性名一定是驼峰命名映射或者完全相同的,所以该注解一般用于另外一种场景,即:当前实体类中有些属性在数据表中是不存在的,此时就会出现异常,而@TableField注解能够通过属性设置来声明某个属性是数据表中不存在的属性,这样MyBatisPlus在生成sql语句时就不会带上它:
@TableField(exist = false)private Integer salary;
MyBatis-Plus 用起来真的很舒服

文章插图
 
更新更新操作也非常简单,直接调用自动生成的方法即可:
@Autowiredprivate EmployeeMapper employeeMapper;@Testvoid contextLoads() {    Employee employee = new Employee(5,"bbb","bbb@qq.com",1,30,3000);    employeeMapper.updateById(employee);}
MyBatis-Plus 用起来真的很舒服

文章插图
 
该方法是根据id进行员工信息的更新,所以id属性不能为空,而且它会根据属性是否为空动态生成sql,即:只更新不为空的属性值 。
查询查询是最为频繁的操作,故提供的查询方法也最多,先来看看selectById方法:
@Autowiredprivate EmployeeMapper employeeMapper;@Testvoid contextLoads() {    Employee employee = employeeMapper.selectById(1);    System.out.println(employee);}
MyBatis-Plus 用起来真的很舒服

文章插图
 
该方法通过id值查询员工信息 。然后是selectBatchIds方法:
@Autowiredprivate EmployeeMapper employeeMapper;@Testvoid contextLoads() {    List<Employee> emps = employeeMapper.selectBatchIds(Arrays.asList(1, 2, 3));    for (Employee emp : emps) {        System.out.println(emp);    }}
MyBatis-Plus 用起来真的很舒服

文章插图
 
该方法是批量查询方法,通过一个id的集合查询这些id的所属员工信息 。selectByMap方法:
@Autowiredprivate EmployeeMapper employeeMapper;@Testvoid contextLoads() {    Map<String,Object> map = new HashMap<>();    map.put("last_name","tom");    map.put("gender",1);    List<Employee> emps = employeeMapper.selectByMap(map);    for (Employee emp : emps) {        System.out.println(emp);    }}
MyBatis-Plus 用起来真的很舒服

文章插图
 
该方法仍然是一个批量查询,通过Map封装查询条件,需要注意Map中的键为数据表中的字段名而非实体类中的属性名 。


推荐阅读