SpringBoot项目整合MyBatis并配置MyBatis中间件的实现
在SpringBoot中,我们可以使用MyBatis来实现持久化操作。本文将详细讲解SpringBoot项目整合MyBatis并配置MyBatis中间件的实现的完整攻略,并提供两个示例。
1. 整合MyBatis
以下是整合MyBatis的基本流程:
- 在pom.xml文件中添加以下依赖:
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
在上面的代码中,我们添加了MyBatis Spring Boot Starter依赖。
- 在application.properties或application.yml文件中添加以下内容:
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases-package=com.example.demo.entity
在上面的代码中,我们设置了数据源的连接信息和MyBatis的配置信息。
- 创建实体类和Mapper接口
public class User {
private Long id;
private String name;
private Integer age;
// 省略getter和setter方法
}
@Mapper
public interface UserMapper {
@Select("SELECT * FROM user WHERE id = #{id}")
User findById(Long id);
@Insert("INSERT INTO user(name, age) VALUES(#{name}, #{age})")
void insert(User user);
}
在上面的代码中,我们创建了一个名为User的实体类和一个名为UserMapper的Mapper接口,并使用注解来指定SQL语句。
- 创建Service类
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public User findById(Long id) {
return userMapper.findById(id);
}
public void insert(User user) {
userMapper.insert(user);
}
}
在上面的代码中,我们创建了一个名为UserService的Service类,并注入了UserMapper。
- 创建Controller类
@RestController
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/user/{id}")
public User findById(@PathVariable Long id) {
return userService.findById(id);
}
@PostMapping("/user")
public void insert(@RequestBody User user) {
userService.insert(user);
}
}
在上面的代码中,我们创建了一个名为UserController的Controller类,并注入了UserService。我们在其中添加了两个请求映射,用于查询和插入用户信息。
- 启动应用程序,并访问http://localhost:8080/user/1,即可看到查询到的用户信息。
2. 配置MyBatis中间件
以下是配置MyBatis中间件的基本流程:
- 在pom.xml文件中添加以下依赖:
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
在上面的代码中,我们添加了PageHelper Spring Boot Starter依赖。
- 在application.properties或application.yml文件中添加以下内容:
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
在上面的代码中,我们设置了PageHelper的配置信息。
- 在Mapper接口中添加分页查询方法
public interface UserMapper {
@Select("SELECT * FROM user")
List<User> findAll();
@Select("SELECT * FROM user WHERE id = #{id}")
User findById(Long id);
@Insert("INSERT INTO user(name, age) VALUES(#{name}, #{age})")
void insert(User user);
@Select("SELECT * FROM user")
List<User> findAllByPage();
}
在上面的代码中,我们在UserMapper接口中添加了一个名为findAllByPage的分页查询方法。
- 修改Service类
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public User findById(Long id) {
return userMapper.findById(id);
}
public void insert(User user) {
userMapper.insert(user);
}
public PageInfo<User> findAllByPage(int pageNum, int pageSize) {
PageHelper.startPage(pageNum, pageSize);
List<User> userList = userMapper.findAllByPage();
return new PageInfo<>(userList);
}
}
在上面的代码中,我们修改了UserService类,并添加了一个名为findAllByPage的方法,用于分页查询用户信息。
- 修改Controller类
@RestController
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/user/{id}")
public User findById(@PathVariable Long id) {
return userService.findById(id);
}
@PostMapping("/user")
public void insert(@RequestBody User user) {
userService.insert(user);
}
@GetMapping("/user")
public PageInfo<User> findAllByPage(@RequestParam(defaultValue = "1") int pageNum,
@RequestParam(defaultValue = "10") int pageSize) {
return userService.findAllByPage(pageNum, pageSize);
}
}
在上面的代码中,我们修改了UserController类,并添加了一个名为findAllByPage的请求映射,用于分页查询用户信息。
- 启动应用程序,并访问http://localhost:8080/user?pageNum=1&pageSize=10,即可看到分页查询到的用户信息。
3. 总结
本文详细讲解了SpringBoot项目整合MyBatis并配置MyBatis中间件的实现的完整攻略,并提供了两个示例。在使用这些技术时,我们应根据实际需求选择合适的方式,并合理配置数据源和MyBatis的配置信息,以便于管理和维护。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot项目整合mybatis并配置mybatis中间件的实现 - Python技术站