1.maven依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
<!--其他使用到的依赖-->
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
</dependency>
<!--Rest接口文档-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
上面只是举例,请自行选择合适的(最新的)版本。
官方文档地址跳转
2.结构搭建
基于spring boot框架,一般采用的controller-service-mapper三层架构而言,我们对数据库的操作一般在mapper层。
mybatis plus便捷的地方在于内置了许多一般sql方法,我们可以通过调用方法的方式来实现sql操作,而不用手写sql。
以下是继承mybatis plus的类和接口的示例:
2.1 service继承IService
public interface DemoService extends IService<Demo> {
}
2.2 serviceImpl继承ServiceImpl<M, T>
@Service
public class DemoServiceImpl extends ServiceImpl<DemoMapper, Demo> implements DemoService {
}
2.3 mapper继承BaseMapper
@Mapper
public interface DemoMapper extends BaseMapper<Demo> {
}
2.4 实体类Demo对应数据库表
@Data
@ApiModel("Demo实体")
@Table(name = "table_demo") // 对应的数据库表名
public class Demo implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(generator = "JDBC")
@ApiModelProperty("主键ID")
private Long id; // 自增的主键id
@Column(name = "field_name")
@ApiModelProperty("姓名")
private String name;
@Column(name = "update_time")
@ApiModelProperty("更新时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;
}
3.简单实用
3.1 直接在Controller调用service实现数据库操作
demoService.getBaseMapper().selectById(id);
3.2 ServiceImpl里调用mapper实现数据库操作
// 这个应该是最常用的形式了
baseMapper.selectById(id);
// 如果serviceImpl没有继承ServiceImpl<M, T>,那么引入继承了BaseMapper<T>的mapper的操作如下
demoMapper.selectById(id);
// 复杂查询条件的拼接(仅限于单表),我比较喜欢的lambda形式
List<Demo> list = new LambdaQueryChainWrapper<Demo>()
.eq(Objects.nonNull(demoReqVO.getId()), Demo::getId, demoReqVO.getId())
.like(StrUtil.isNotBlank(demoReqVO.getName), Demo::getName, demoReqVO.getName)
.gt(Objects.nonNull(demoReqVO.getUpdateTime()), Demo::getUpdateTime, demoReqVO.getUpdateTime()) // 大于
.list();
版权声明:本文为DATANGguanjunhou原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。