MybatisPlus的原理及MybatisPlus的增删改查
1.MybatisPlus的原理
**核心:以对象的方式去操作数据库
例子:自己去编写userMapper.insert/delete/select(user对象);**
2使用mp的准备工作
2.1导入jar包依赖(注:若使用mp时,在导入mp的jar包后需将之间的Mybatis的jar包删除)
<!--spring整合mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
2.2编辑user POJO对象
@Data
@Accessors(chain = true)
@TableName("user") //实现表与对象的关联,如果对象名与表名一致,可以省略
public class User implements Serializable {
@TableId(type = IdType.AUTO)
private Integer id; //主键自增
private String name;
private Integer age;
private String sex;
}
2.3UserMapper继承公共的Mapper几口
public interface UserMapper extends BaseMapper<user>{
List<User> findAll();
}
2.4配置YML配置文件
#Mybatis-plus整合
mybatis-plus:
#定义别名包
type-aliases-package: com.jt.pojo
#添加xml文件的依赖
mapper-locations: classpath:/mybatis/mappers/*.xml
#开启驼峰映射
configuration:
map-underscore-to-camel-case: true
#配置数据日志
logging:
level:
#打印哪个包下的日志信息(info>debug)
com.jt.mapper: debug
3.在这里插入代码片MP的CRUD的test
@SpringBootTest
public class TestMybatis {
@Autowired
private UserMapper userMapper;
@Test
public void test01() {
List<User> users = userMapper.findAll();
System.out.println(users);
}
3.1 Update
/**
* 9.需求:根据id值进行修改,把id值为49的name属性修改为"王鼎" 年龄25 性别为女
*/
@Test
public void update01(){
User user=new User();
user.setId(49).setName("王鼎").setAge(25).setSex("女");
int row=userMapper.updateById(user);
System.out.println(row);
}
/**
* 10.需求:根据姓名去修改这条数据的属性
*/
@Test
public void update02(){
UpdateWrapper<User> userUpdate=new UpdateWrapper<>();
userUpdate.eq("name","蒋俊超");
User user=new User();
user.setAge(360).setSex("奥特曼");
int row = userMapper.update(user,userUpdate);
System.out.println("成功修改行数:"+row);
}
3.2 Delete
/** 7.根据需求删除id值为50的用户
*/
@Test
public void delete01(){
User user = new User();
userMapper.deleteById(50);
System.out.println("已删除");
}
/** 8.需求:根据id值批量删除
*/
@Test
public void delete02(){
List<Integer> userList=new ArrayList<Integer>();
userList.add(8);
userList.add(9);
int rows = userMapper.deleteBatchIds(userList);
System.out.println("已成功删除数据:"+rows);
}
/** 根据条件删除数
* 11.需求:删除满足条件的数据(delete>deleteMap deleteMap具有一定的局限性,他的条件必须是固定的)
* 如:删除性别是女并且年龄大于19的数据
*/
@Test
public void delete03(){
QueryWrapper<User> queryWrapper=new QueryWrapper<>();
//queryWrapper.eq("sex","男");
queryWrapper.eq("sex","女").gt("age",19); // 删除条件为性别是男,年龄大于26的所有的数据
int row = userMapper.delete(queryWrapper);
System.out.println("已删除"+row);
}
/**
* 12.需求;删除满足条件的数据(根据map里的属性找到对应的数据进行删除)
*/
@Test
public void delete04(){
Map<String,Object> map=new HashMap<String,Object>();
map.put("age",30);
map.put("sex","男");
int row =userMapper.deleteByMap(map);
System.out.println("已删除的数据:"+row);
}
3.3 select
/**
* 2.测试查询
* 查询id为21的用户
*/
@Test
public void select01() {
User user = userMapper.selectById(21);
System.out.println(user.getAge());
//查询总记录数
int count = userMapper.selectCount(null);
System.out.println(count);
}
/**
* 3.查询性别为女 年龄大于100
* 条件构造器:动态拼接where条件
* 常用逻辑运算符(mp):
* eq:= gt:> lt:<
* ge:>= le:<=
*/
@Test
public void select02() {
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("sex", "女")
.gt("age", "100");
List<User> userList = userMapper.selectList(queryWrapper);
System.out.println(userList);
}
/**
* 4.查询名称中包含"精"字的男性妖怪
*/
@Test
public void select03() {
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.likeLeft("name", "精").eq("sex", "男");
//queryWrapper.like("name", "精").eq("sex", "男");
List<User> userList = userMapper.selectList(queryWrapper);
System.out.println(userList);
}
/**
* 5.查询名sex为女,之后按照age倒叙排列.如果年龄相同按照id排列
*/
@Test
public void select04() {
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("sex","女").orderByDesc("age","id");
List<User> userList = userMapper.selectList(queryWrapper);
System.out.println(userList);
}
/**
* 6.需求:查询id为1 3 5 7 8 9的需求
*/
@Test
public void select05() {
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.in("id",1,3,5,7,8,9);
List<User> userList = userMapper.selectList(queryWrapper);
System.out.println(userList);
}
3.4 insert
/**
* 1.测试入库
* 用户信息 王大锤 20 男
*/
@Test
public void insert() {
User user = new User();
user.setName("王大锤").setAge(20).setSex("男");
userMapper.insert(user);
}