SpringBoot是一个非常流行的Java开发框架,而Mybatis-Plus则是Mybatis框架的一个插件,提供了更加便捷的CRUD操作以及更优雅的SQL语句写法。下面就为大家详细讲解如何整合SpringBoot和Mybatis-Plus,并提供两个简单的用法示例。
1. 初始化SpringBoot项目
首先我们需要初始化一个SpringBoot项目,并引入相关依赖。可以在官方网站上选择相应的配置,也可以使用其他工具快速初始化项目。
在pom.xml
中加入如下依赖:
<dependencies>
<!--SpringBoot Web依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--SpringBoot Mybatis依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
<!--MySql数据库驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>
<!--Druid数据库连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.6</version>
</dependency>
<!-- Mybatis-Plus 自动生成代码依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.4.2</version>
</dependency>
</dependencies>
2. 配置数据源
在application.properties
中配置数据源:
# 数据源配置
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# druid配置
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.druid.initial-size=1
spring.datasource.druid.min-idle=1
spring.datasource.druid.max-active=20
spring.datasource.druid.test-on-borrow=true
spring.datasource.druid.on-remove-abandoned=true
spring.datasource.druid.remove-abandoned-timeout-millis=30000
#mybatis-plus配置
mybatis-plus.mapper-locations=classpath*:mapper/**Mapper.xml
mybatis-plus.type-aliases-package=com.example.demo.entity
mybatis-plus.configuration.map-underscore-to-camel-case=true
这里使用了Druid作为数据源连接池,确保SpringBoot整合Mybatis-Plus的稳定性。
3. 创建实体类
在创建数据库表后我们需要对应创建相应的实体类以方便操作。
例如我们创建了一个user表,那么对应的实体类应该是这样的:
@Getter
@Setter
public class User {
private Integer id;
private String name;
private Integer age;
private String email;
private LocalDateTime createTime;
private LocalDateTime updateTime;
}
需要注意的是,Mybatis-Plus是基于反射的ORM框架,所以这里必须添加getter
和setter
方法。
4. 编写Mapper层
这里需要创建一个Mapper接口对数据库进行操作,该接口继承自Mybatis-Plus提供的BaseMapper
接口。
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
注意:这里的Mapper接口必须使用@Mapper
注解标记,否则Mybatis-Plus无法扫描该接口。
5. 编写Service层
在Service层中调用Mapper层的方法进行数据操作。
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public boolean addUser(User user) {
int result = userMapper.insert(user);
return result == 1;
}
@Override
public boolean deleteUser(Integer userId) {
int result = userMapper.deleteById(userId);
return result == 1;
}
@Override
public boolean updateUser(User user) {
int result = userMapper.updateById(user);
return result == 1;
}
@Override
public User getUserById(Integer userId) {
return userMapper.selectById(userId);
}
@Override
public List<User> getUserList() {
return userMapper.selectList(null);
}
}
以上实现的是User相关的常用CURD操作。
6. 编写Controller层
在Controller中暴露接口供前端调用服务。
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@PostMapping("/add")
public Map<String, Object> addUser(@RequestBody User user) {
Map<String, Object> result = new HashMap<>();
boolean isSuccess = userService.addUser(user);
if (isSuccess) {
result.put("code", 200);
result.put("msg", "添加成功!");
} else {
result.put("code", 500);
result.put("msg", "添加失败!");
}
return result;
}
}
以上实现的是添加User操作相关的接口,类似的其他操作方法可以仿照此类进行实现。
示例一:Mybatis-Plus的查询操作
在Service接口中新增getUsersByName
方法:
List<User> getUsersByName(String name);
在Service实现类中实现该方法:
@Override
public List<User> getUsersByName(String name) {
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(User::getName, name);
return userMapper.selectList(queryWrapper);
}
以上实现的是根据name属性查询user的方法。
在Controller中新增相关接口:
@GetMapping("/byName")
public List<User> getUserByName(@RequestParam("name") String name) {
return userService.getUsersByName(name);
}
该接口请求方式为GET请求,请求参数为name,返回值为符合条件的User列表。
示例二:Mybatis-Plus的分页操作
在Service接口中新增getUserPage
方法:
IPage<User> getUserPage(Integer pageNo, Integer pageSize);
在Service实现类中实现该方法:
@Override
public IPage<User> getUserPage(Integer pageNo, Integer pageSize) {
Page<User> page = new Page<>(pageNo, pageSize);
return userMapper.selectPage(page, null);
}
以上代码实现的是对用户进行分页操作。
在Controller中新增该操作对应的接口:
@GetMapping("/list/{pageNo}/{pageSize}")
public IPage<User> getUserListByPage(@PathVariable("pageNo") Integer pageNo, @PathVariable("pageSize") Integer pageSize) {
return userService.getUserPage(pageNo, pageSize);
}
通过访问/user/list/{pageNo}/{pageSize}
接口即可获取所有User进行分页之后的结果。
至此,一个简单的SpringBoot整合Mybatis-Plus的示例就已经完成了。Mybatis-Plus的使用非常方便,能够大大提升开发效率。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot整合Mybatis-plus案例及用法实例 - Python技术站