一、介绍mybatis plus
mybatis plus是一款基于mybatis开发的辅助插件,增强mybatis功能,目的是为了简化开发。
缺点:大部分只适用单表查询,多表仍需自己手写方法和sql。
优点:
- 对于普通CRUD直接调用内部封装好的方法。
- 对于条件查询,可以使用mybatis plus的条件构造器来进行构造。
二、开始使用
- 引入依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.4.RELEASE</version>
<relativePath/>
</parent>
- 在yml或者properties中配置数据库信息
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url:
username:
password:
type: com.alibaba.druid.pool.DruidDataSource
- 在项目启动类中添加mapper扫描
//直接放在启动类上方即可,这里的地址是你的mapper路径。
@MapperScan("com.mybatisplus.mapper")
- 添加实体类
//记得命名和属性要和数据库中对应,一般是驼峰命名最好
//在对应主键位置添加注解@TableId
//如果在实体类中有新添加的属性(对应数据表中没有这个属性),要添加上@TableField(exist = false)注解,表明这个属性在数据表中不存在
//比如 :
@TableField(exist = false)
private User user;
- 简单使用
//这是serviceImpl中的代码,selectById()就是mybatis plus自带的方法
public Topic getTopicById(int tid) {
return topicMapper.selectById(tid);
}
三、其他使用
- 普通单表CRUD
略 - 多表查询
环境:用户表 user,帖子表 topic
需求:获取所有帖子,并且一起查询到发帖人姓名
实现:
//mapper文件夹下的mapper类中
/**
* 1. 先查询所有帖子
* 2. Results:结果集映射封装,和在xml中是一样的,这里采用的是注解开发方式
* 3. id:定义这个封装好的结果集,方便代码复用
* 4. value:定义结果映射
* 5.property:对应的是topic实体类中的属性(private User user)
* 6. column:意思是用topic实体类对应的数据库表中的哪一个字段来获取这个属性(user)
* 7. @one注解:根据column中的数据调用查询user的方法并封装在topic中的user属性
*
*
*/
@Select("select * from topic")
@Results(id = "topicMap",value = {
@Result(property = "user",column = "t_uid",one = @One(select = "com.henu.mapper.UserMapper.selectById"))
})
List<Topic> getTopic();
此时查询到的结果是带有user的topic,完成连表查询。