快速整合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