快速整合SpringBoot通用Mapper的代码有哪些?
后端业务开发,每个表都要用到单表的增删改查等通用方法,而配置了通用Mapper可以极大的方便使用Mybatis单表的增删改查操作。
通用mapper配置
1、添加maven:
dependency>
groupId>
org.springframework.boot/groupId>
artifactId>
spring-boot-starter-web/artifactId>
/dependency>
!--通用mapper-->
dependency>
groupId>
tk.mybatis/groupId>
artifactId>
mapper-spring-boot-starter/artifactId>
version>
2.1.5/version>
/dependency>
!-- pagehelp -->
dependency>
groupId>
com.github.pagehelper/groupId>
artifactId>
pagehelper-spring-boot-starter/artifactId>
version>
1.2.3/version>
/dependency>
2、Application启动文件添加MapperScan注解
在springboot启动类添加tk.mybatis包下MapperScan注解
import tk.mybatis.spring.annotation.MapperScan;
@SpringBootApplication
@MapperScan("com.springboot.dao")
public class Application extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
其中com.springboot.dao是dao层的路径。
3、Model添加注解
添加Table注解和Id注解,
Table id
例如下方的User实体:
@Table(name = "t_user")
public class User {
//主键
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)//自增
private Integer id;
}
4、创建MyMapper
import tk.mybatis.mapper.common.IdsMapper;
import tk.mybatis.mapper.common.Mapper;
public interface MyMapperT>
extends MapperT>
, IdsMapperT>
{
}
需要实现的通用接口都写在MyMapper的继承类中,该类的包不能被MapperScan扫描到。
MapperT>
IdsMapperT>
5、每个dao继承步骤4的MyMapper
例如UserDao继承MyMapperUser>
:
public interface UserDao extends MyMapperUser>
{
}
通用service
上面配置只是调用dao层可以有默认的增删改查的方法,还是要在对应的service添加增删查改,所以需要写一个通用service,把公共的方法都抽象到一个基础方法中。
BaseService.java接口:
public interface BaseServiceT>
{
/**
* 查询所有
*
* @return 返回所有数据
*/
ListT>
selectAll();
/**
* 查询数据数量
* @return
*/
int selectCount();
/**
* 添加
*
* @param t 实体
*
* @return
*/
int save(T t);
/**
* 修改
*
* @param t
* 实体
* @return
*/
int updateByPrimaryKey(T t);
/**
* 根据主键删除
*
* @param t 主键
*
* @return
*/
int deleteByPrimaryKey(int t);
}
BaseServiceImpl实现类:
public class BaseServiceImplT>
implements BaseServiceT>
{
@Autowired
private MyMapperT>
mapper;
@Override
public ListT>
selectAll() {
return mapper.selectAll();
}
@Override
public int selectCount() {
return mapper.selectCount(null);
}
@Override
public int save(T t) {
return mapper.insert(t);
}
@Override
public int updateByPrimaryKey(T t) {
return mapper.updateByPrimaryKey(t);
}
@Override
public int deleteByPrimaryKey(int t) {
return mapper.deleteByPrimaryKey(t);
}
}
所有的service和serviceImpl都分别继承BaseService和BaseServiceImpl,例如UserService和UserServiceImpl分别继承BaseService和BaseServiceImpl:
public interface UserService extends BaseServiceUser>
{
}
@Service
public class UserServiceImpl extends BaseServiceImplUser>
implements UserService{
}
配置完成之后,在对应的controller调用,比如UserController:
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@PostMapping("/add")
public Object add(User user) {
userService.save(user);
return null;
}
@PostMapping("/delete")
public Object delete(@RequestParam Integer id) {
userService.deleteByPrimaryKey(id);
return null;
}
@PostMapping("/update")
public Object update(User user) {
userService.updateByPrimaryKey(user);
return null;
}
@GetMapping("/detail")
public User detail(@RequestParam Integer id) {
User user = userService.selectById(id);
return user;
}
@GetMapping("/list")
public ListUser>
list() {
ListUser>
list = userService.list();
return list;
}
}
总结
通用mapper:
- 创建SpringBoot启动文件添加
MapperScan,扫描dao层的包。 - 创建
MyMapperT>接口,根据自己需求继承要用的接口,比如MapperT>。 - 每个dao接口继承
MyMapperT>接口。
通用service
- 创建
BaseService接口。 BaseServiceImpl实现类,调用MyMapperT>实现增删改查方法。- 每个
service接口和service实现类分别继承BaseService接口和BaseServiceImpl实现类。 - 每个
controller就能调用通用方法。
遇到的问题
1、启动报错
required a bean of type 'com.jeremy.data.utils.MyMapper' that could not be found.
没有找到MyMapper对应的bean,无法注入。
解决方案:
1、SpringBoot启动文件添加MapperScan注解。
2、每个dao接口都要继承MyMapper。
以上两个步骤缺一不可。
github源码
https://github.com/jeremylai7/springboot-bootstrap
以上就是关于快速整合SpringBoot通用Mapper的代码有哪些?的介绍啦,需要的朋友可以参考上述内容,希望对大家有帮助,想要了解更多,欢迎关注网络,小编将为大家输出更多高质量的实用文章!
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 快速整合SpringBoot通用Mapper的代码有哪些?
本文地址: https://pptw.com/jishu/652153.html
