MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
1.添加依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
2、编写实体类
package com.mybatis.plus.pojo;
import com.baomidou.mybatisplus.annotation.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
// @TableId(type = IdType.ID_WORKER)
private Long id;
private String name;
private Integer age;
private String email;
@Version // 乐观锁
private Integer version;
// 字段添加填充内容
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
}
3、dao层继承 BaseMapper<泛型是实体类>
package com.mybatis.plus.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mybatis.plus.pojo.User;
import org.springframework.stereotype.Repository;
@Repository //代表持久层
public interface UserMapper extends BaseMapper<User> {
}
4、CRUD 测试
package com.mybatis.plus;
import com.mybatis.plus.mapper.UserMapper;
import com.mybatis.plus.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@SpringBootTest
class MybatisPlusApplicationTests {
@Autowired
private UserMapper userMapper;
// 全查
@Test
void contextLoads() {
List<User> userList = userMapper.selectList(null);
for (User user : userList) {
System.out.println("user = " + user);
}
}
// 插入
@Test
public void testInsert(){
User user = new User();
user.setName("订单");
user.setAge(18);
user.setEmail("1424684021@qq.com");
int insert = userMapper.insert(user);
System.out.println("insert = " + insert);
}
// 更新
@Test
public void testUpdate(){
User user = new User();
user.setId(1496116084628017154L);
user.setName("cc");
int i = userMapper.updateById(user);
System.out.println("i = " + i);
}
// 测试乐观锁成功
@Test
public void testOptimisticLocker(){
User user = userMapper.selectById(1L);
user.setName("qwerty");
user.setEmail("465132@qq.com");
userMapper.updateById(user);
}
// 测试乐观锁失败
@Test
public void testOptimisticLocker2(){
//线程 1
User user = userMapper.selectById(1L);
user.setName("qwerty1111");
user.setEmail("465132@qq.com");
// 模拟另外一个线程执行了插队操作
User user2 = userMapper.selectById(1L);
user2.setName("qwerty2222");
user2.setEmail("465132@qq.com");
userMapper.updateById(user2);
userMapper.updateById(user);
}
// 多个id查询
@Test
public void testSelectByIds(){
List<User> users = userMapper.selectBatchIds(Arrays.asList(1, 2, 3));
for (User user : users) {
System.out.println("user = " + user);
}
}
// 条件查询 map
@Test
public void testSelectByMapIds(){
Map map = new HashMap<>();
map.put("name","cc");
List<User> users = userMapper.selectByMap(map);
for (User user : users) {
System.out.println("user = " + user);
}
}
}