该趟专车是开往SpringBoot集成Mybatis的实战专车,主要讲解Spring Boot如何集成数据访问层Mybatis框架,从而实现数据增、删、改、查持久化功能。
第一个问题:SpringBoot集成数据访问框架Mybatis需要哪些步骤?
第一步:在父模块下创建一个名为boot-example-mybatis的子模块
第二步:在子模块中添加需要的依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
</dependencies>
第三步:配置数据源信息
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
username: root
password: root
type: com.zaxxer.hikari.HikariDataSource
hikari:
minimum-idle: 10
maximum-pool-size: 10
auto-commit: true
idle-timeout: 30000
pool-name: DatebookHikariCP
max-lifetime: 1800000
connection-timeout: 30000
connection-test-query: SELECT 1
第四步:指定mybatis xml文件路径
mybatis:
mapperLocations: 'classpath*:mapper/**/*.xml'
第五步:编写实体类
@Data
public class User {
private Integer id;
private String name;
private Integer age;
}
第六步:编写mapper接口
@Mapper
public interface UserMapper {
/**
* 查询用户列表信息
* @return 用户列表信息
*/
List<User> list();
/**
* 根据编号查询用户信息
* @param id 用户id
* @return 用户信息
*/
User getById(Integer id);
/**
* 新增用户
* @param user 用户信息
* @return 受影响的行数
*/
int save(User user);
/**
* 修改用户
* @param user 用户信息
* @return 受影响的行数
*/
int update(User user);
}
特别注意:mapper接口上必须要使用@Mapper注解标注
第七步:编写业务层
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
/**
* 查询用户列表信息
* @return 用户列表信息
*/
public List<User> list() {
return userMapper.list();
}
/**
* 根据编号查询用户信息
* @param id 用户id
* @return 用户信息
*/
public User getById(Integer id) {
return userMapper.getById(id);
}
/**
* 新增用户
* @param user 用户信息
* @return 受影响的行数
*/
public int save(User user) {
return userMapper.save(user);
}
/**
* 修改用户
* @param user 用户信息
* @return 受影响的行数
*/
public int update(User user) {
return userMapper.update(user);
}
}
第八步:编写控制器
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserService userService;
/**
* 查询用户列表信息
* @return 用户列表信息
*/
@GetMapping("/")
public List<User> list() {
return userService.list();
}
/**
* 根据编号查询用户信息
* @param id 用户id
* @return 用户信息
*/
@GetMapping("/id/{id}")
public User getById(@PathVariable("id") Integer id) {
return userService.getById(id);
}
/**
* 新增用户
* @param user 用户信息
* @return 受影响的行数
*/
@PostMapping("/")
public int save(@RequestBody User user) {
return userService.save(user);
}
/**
* 修改用户
* @param user 用户信息
* @return 受影响的行数
*/
@PutMapping("/")
public int update(@RequestBody User user) {
return userService.update(user);
}
}
第九步:编写启动类
@SpringBootApplication
public class MybatisApplication {
public static void main(String[] args) {
SpringApplication.run(MybatisApplication.class, args);
}
}
第十步:在resources目录下创建mapper目录,然后在mapper目录下创建UseMapper.xml
<?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.boot.example.mapper.UserMapper">
<sql id="BASE_SELECT_COLUMN">
id,
name,
age
</sql>
<select id="list" resultType="com.boot.example.entity.User">
SELECT
<include refid="BASE_SELECT_COLUMN"/>
FROM
user
</select>
<select id="getById" parameterType="integer" resultType="com.boot.example.entity.User">
SELECT
<include refid="BASE_SELECT_COLUMN"/>
FROM
user
WHERE id = #{id}
</select>
<insert id="save" parameterType="com.boot.example.entity.User">
INSERT INTO user VALUES(#{id}, #{name}, #{age})
</insert>
<update id="update" parameterType="com.boot.example.entity.User">
UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}
</update>
</mapper>
第十一步:启动项目
访问用户列表接口:http://localhost:8080/users/ GET
[
{
"id": 10001,
"name": "test",
"age": 22
},
{
"id": 10008,
"name": "test88",
"age": 88
},
{
"id": 20001,
"name": "boot-upd",
"age": 24
},
{
"id": 30001,
"name": "smile",
"age": 22
},
{
"id": 100011,
"name": "test101",
"age": 101
},
{
"id": 100012,
"name": "test102",
"age": 102
},
{
"id": 100013,
"name": "111",
"age": 22
}
]
访问查看用户信息接口:http://localhost:8080/users/id/10001 GET
{
"id": 10001,
"name": "test",
"age": 22
}
访问新增用户接口 :http://localhost:8080/users/ POST
请求参数:
{
"id":"20001",
"name":"boot-save",
"age":"28"
}
访问修改用户接口:http://localhost:8080/users/ PUT
请求参数:
{
"id":"20001",
"name":"boot-upd",
"age":"24"
}
第一个问题:SpringBoot集成数据访问框架Mybatis需要如下步骤:
①添加Mybatis对应的starter
②添加java操作mysql的依赖
③配置数据源
④配置mybatis xml文件路径
⑤在mapper接口上使用@Mapper注解标注
如上示例通过@Mapper注解来标注一个mapper接口,让mybatis starter能够识别mapper接口,从而对mapper接口进行代理,实现数据访问层功能。这也就意味着每写一个mapper接口,就要加上一个@Mapper注解,无疑增加了开发负担,有没有一种实现方式可以避免这种重复的劳动?答案会在下一篇实战专车中揭晓,敬请期待。
[SpringBoot集成数据访问框架Mybatis](https://github.com/a601942905git/boot-example/tree/master/boot-example-mybatis)