在测试方法中调用userMapper中的insert方法
@Test public void insert(){ User user = new User(); user.setName("黄小明"); user.setAge(20); user.setManagerId(1088248166370832385L); user.setCreateTime(LocalDateTime.now()); int rows = userMapper.insert(user); System.out.println("影响记录数:"+rows); }
测试结果
DEBUG==> Preparing: INSERT INTO user ( id, name, age, manager_id, create_time ) VALUES ( ?, ?, ?, ?, ? ) DEBUG==> Parameters: 1223961279246393345(Long), 黄小明(String), 20(Integer), 1088248166370832385(Long), 2020-02-02T21:28:03.621(LocalDateTime) DEBUG<== Updates: 1 影响记录数:1
常用注解
MyBatisPlus提供了一些注解供我们在实体类和表信息出现不对应的时候使用。通过使用注解完成逻辑上匹配。
@TabName注解
当修改数据库表明却不想修改实体类型时,可以通过@TabName("数据库表名")来指定表名,否则会运行报错。
@Data @TableName("mp_user") public class User { //主键 private Long id; //姓名 private String name; //年龄 private Integer age; //邮箱 private String email; //直属上级 private Long managerId; //创建时间 private LocalDateTime createTime; }
@TabId注解
当实例中主键与数据库中的主键名称不一致时(例如实例中为驼峰命名,数据库表中为下划线命名),可使用该注解。
@TableField注解
当实例中的字段与数据库中的字段不同时,就可以使用该注解映射,如下例
@TableField("name") private String realName;
排除非表字段的三种方式
第一:在声明类属性时使用 transient 关键字声明。
第二:如上方法可能无法序列化该字段,故可以在声明类属性时:使用 static 关键字声明为静态变量(注意,用static 声明的静态变量lombok不会为其添加set和get方法)。
第三:使用@TableField(exist = false)注解注解 其中括号中的 exist = false 表示该字段不是数据库表中的字段,无需映射。
@Test public void selectById() { User user = userMapper.selectById(1094590409767661570L); System.out.println(user); }
批量查询:selectBatchIds()
@Test public void selectByIds() { List<Long> idsList = Arrays.asList(1094592041087729666L, 1223961279246393345L, 1088250446457389058L); List<User> users = userMapper.selectBatchIds(idsList); users.forEach(System.out::println); }