Mybatis_plus(springboot)
1.依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
2.appliction.yml
spring:
datasource:
#1.JDBC
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/demo?characterEncoding=utf8&useUnicode=true&useSSL=false&serverTimezone=GMT%2B8
username: root
password: root
3.插件代码生成
添加数据源(Database),下载MybatisX插件
图片:
4.启动类
@SpringBootApplication
@MapperScan("com.example.demomybatisplus.mapper")
public class DemoMybatisplusApplication {
public static void main(String[] args) {
SpringApplication.run(DemoMybatisplusApplication.class, args);
}
}
5.实体类
@TableName(value ="pepo")//对应数据库中的表名
@Data
@AllArgsConstructor
public class Pepo implements Serializable {
/**
* 注意数据库id字段必须是bigint类型
实体类Long类型这样可以实现id添加自增
*/
@TableId(value = "id", type = IdType.AUTO )
private Long id;
private String name;
private Integer sex;
@TableField(exist = false)//实现数据默认值填充fill属性
private static final long serialVersionUID = 1L;
public Pepo() {
}
}
5.基本的CRUD
public interface BaseMapper<T> extends Mapper<T> {
int insert(T entity);
int deleteById(Serializable id);
int deleteByMap(@Param("cm") Map<String, Object> columnMap);
int delete(@Param("ew") Wrapper<T> wrapper);
int deleteBatchIds(@Param("coll") Collection<? extends Serializable> idList);
int updateById(@Param("et") T entity);
int update(@Param("et") T entity, @Param("ew") Wrapper<T> updateWrapper);
T selectById(Serializable id);
List<T> selectBatchIds(@Param("coll") Collection<? extends Serializable> idList);
List<T> selectByMap(@Param("cm") Map<String, Object> columnMap);
T selectOne(@Param("ew") Wrapper<T> queryWrapper);
Integer selectCount(@Param("ew") Wrapper<T> queryWrapper);
List<T> selectList(@Param("ew") Wrapper<T> queryWrapper);
List<Map<String, Object>> selectMaps(@Param("ew") Wrapper<T> queryWrapper);
List<Object> selectObjs(@Param("ew") Wrapper<T> queryWrapper);
<E extends IPage<T>> E selectPage(E page, @Param("ew") Wrapper<T> queryWrapper);
<E extends IPage<Map<String, Object>>> E selectMapsPage(E page, @Param("ew") Wrapper<T> queryWrapper);
}
分页插件:
//Spring boot方式
@EnableTransactionManagement
@Configuration
public class MybatisPlusConfig {
/**
* 分页插件
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
controller层
@RestController
@RequestMapping("/student")
public class StudentController {
@Autowired
IStudentService studentService;
@RequestMapping(value = "/findAll",method = RequestMethod.POST)
public Object findAll(HttpServletRequest request){
//获取前台发送过来的数据
Integer pageNo = Integer.valueOf(request.getParameter("pageNo"));
Integer pageSize = Integer.valueOf(request.getParameter("pageSize"));
IPage<Student> page = new Page<>(pageNo, pageSize);
QueryWrapper<Student> wrapper = new QueryWrapper<>();
Student student = new Student();
student.setId(1);
wrapper.setEntity(student);
return studentService.page(page,wrapper);
}
}
乐观锁插件:
//注册乐观锁插件
//添加字段version
@Bean
public OptimisticLockerInterceptor optimisticLockerInterceptor() {
return new OptimisticLockerInterceptor();
}
6.Wrapper
Wrapper为条件查询构造器,QueryWrapper为Wrapper的一个实现方法。主要是用来进行多个where条件的拼接。
例如:
QueryWrapper<Student> queryWrapper = new QueryWrapper<>();
queryWrapper.gt("age", 10).eq("sex", "女"); //年龄大于10且性别为“女"
7.AR操作(优雅)
就是让实体类集成Model,重写可序列方法pkVal
@Data
public class User extends Model<User> {
private Long id;
private String name;
private Integer age;
private String email;
/**
* 指定当前实体类的主键属性
*/
@Override
protected Serializable pkVal() {
return id;
}
}
@Test
public void TestAR(){
User user=new User();
//查询
//user=user.selectById(1);
//System.out.println(user);
//插入
/* user.setName("binghong");
user.setAge(30);
user.setEmail("binghong@sina.com");
boolean result=user.insert();
System.out.println(result);*/
//修改
/*user.setId(6L);
user.setName("binghong2");
user.setAge(30);
user.setEmail("binghong@sina.com");
boolean result=user.updateById();
System.out.println(result);*/
//删除
user.setId(6L);
boolean result=user.deleteById();
System.out.println(result);
//分页查询
Page<User> userPage = user.selectPage(new Page<User>(1, 2),
new EntityWrapper<User>().like("user_name", "三"));
List<User> records = userPage.getRecords();
}