[SpringBoot]在Springboot中接入Mybatis-plus

加入依赖

pom.xml

1
2
3
4
5
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.1.0</version>
</dependency>

配置 MapperScan 注解

1
2
3
4
5
6
7
8
9
@SpringBootApplication
@MapperScan("com.your.package.**.mapper")
public class Application {

public static void main(String[] args) {
SpringApplication.run(BootdoApplication.class, args);
}

}

配置application.yml(以yml文件为例)

1
2
3
4
5
mybatis:
configuration:
map-underscore-to-camel-case: true
mapper-locations: classpath*:/mapper/**/*.xml
typeAliasesPackage: com.your.package.**.entity

数据源配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.01:3306/demo?useUnicode=true&characterEncoding=utf8
username: root
password: root
initialSize: 1
minIdle: 3
maxActive: 20
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 30000
validationQuery: select 'x'
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
filters: stat,wall,slf4j
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

创建entity

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package com.your.package.**.entity;

import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;

@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class Demo implements Serializable {

private static final long serialVersionUID = 1L;

@TableId(value = "classId", type = IdType.AUTO)
private Long classId;

@TableField("className")
private String className;
}

注意:这里使用了@Data注解来简化代码,否则要完整书写gettersetter类方法。
你可以增加依赖lombok来使用它

1
2
3
4
5
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>

另外如果你使用Idea则还需要Lombok Plugin插件,你才能正常使用gettersetter代码提示及正常编译。

创建mapper

1
2
3
4
5
6
7
8
9
package com.your.package.**.mapper;

import com.your.package.**.entity.Demo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface DemoMapper extends BaseMapper<Demo> {}

创建service

1
2
3
4
5
6
7
package com.your.package.**.service;

import com.your.package.**.entity.Demo;
import com.baomidou.mybatisplus.extension.service.IService;

public interface DemoService extends IService<Demo> {}

创建serviceImpl

1
2
3
4
5
6
7
8
9
10
11
package com.your.package.**.service.impl;

import com.your.package.**.entity.Demo;
import com.your.package.**.mapper.DemoMapper;
import com.your.package.**.service.DemoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;

@Service
public class DemoServiceImpl extends ServiceImpl<DemoMapper, Demo> implements DemoService {}

创建mapper.xml

在resources/maaper目录下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.your.package.**.mapper.DemoMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.your.package.**.entity.Demo">
<id column="classId" property="classId" />
<result column="className" property="className" />
</resultMap>

<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
contentId, className
</sql>

</mapper>

在controller中使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package com.your.package.**.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api")
public class DemoController {
private final Logger logger = LoggerFactory.getLogger(DemoController.class);
@Autowired
public DemoService iDemoService;

@RequestMapping("/demo")
@ResponseBody
public Page demo(
@RequestParam(name = "page", defaultValue = "1") int page,
@RequestParam(name = "size", defaultValue = "20") int size){
QueryWrapper<Demo> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("classId",1);
Page ipage = new Page(page,size);
iDemoService.page(ipage,queryWrapper);
return ipage;
}
}

结束