通用CRUD
通过Mybatis-Plus与MyBatis、Spring、SpringBoot框架的简单整合的学习,我们了解到通过继承BaseMapper就可以获取到各种各样的单表操作,接下来我们继续深入学习MyBatis-Plus的通用CRUD操作
数据插入
测试用例
这里使用的环境是SpringBoot+MyBatis-Plus中的代码环境
插入一条数据
package com.zg.mp;
import com.zg.mp.mapper.UserMapper;
import com.zg.mp.pojo.User;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
class TestUserMapper {
@Autowired
private UserMapper userMapper;
@Test
public void testInsert(){
User user = new User();
user.setName("虾哥");
user.setAge(22);
user.setUserName("xiage");
user.setEmail("1@lllt.com");
user.setPassword("123123123");
int result = this.userMapper.insert(user);//result数据库受影响的行数
System.out.println("result:"+result);
//获取自增长后的id值
//在plus插件中,当我们新增数据后,自增长的id会回填到对象中
System.out.println("id:"+user.getId());
}
}
测试结果
自增的id错误
通过上面的实验数据已经写入了数据库,但是Id的值不正确,我们期望的是数据库自增长,实际是MP生成了id的值写入到了数据库
设置id自增长的策略
设置id自增长的策略@TableId(type = IdType.AUTO)
修改User对象
package com.zg.mp.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("tb_user")
public class User {
@TableId(type = IdType.AUTO)
private Long id;
private String userName;
private String password;
private String name;
private Integer age;
private String email;
}
数据插入成功
@TableField详解
在MP中通过@TableField注解可以自定字段的一些属性,常常解决2个问题
1、对象中属性名和字段名不一致的问题(非驼峰)
2、对象中的属性字段在表中不存在的问题
package com.zg.mp.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("tb_user")
public class User {
@TableId(type = IdType.AUTO)
private Long id;