mybatis plus的简单使用

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版权协议,转载请附上原文出处链接和本声明。