springboot自动生成mapper,springboot@mapper

  springboot自动生成mapper,springboot@mapper

  

目录
前言通用制图人配置通用服务总结通用映射器:通用服务遇到的问题开源代码库源码

  

前言

后端业务开发,每个表都要用到单表的增删改查等通用方法,而配置了通用制图人可以极大的方便使用框架单表的增删改查操作。

  

通用mapper配置

1、添加maven:

  依赖groupIdorg.springframework.boot/groupId artifact id spring-boot-starter-web/artifact id/dependency!-通用映射器-依赖关系groupIdtk.mybatis/groupId工艺品Id映射器-弹簧靴启动器/artifactId版本2 . 1 . 5/版本/依赖关系!-页面帮助-依赖groupIdcom.github.pagehelper/groupId artifact id页面助手-spring-boot-starter/artifact id版本1 . 2 . 3/版本/依赖性2、应用程序启动文件添加地图扫描注解

  在跳羚启动类添加tk.mybatis包下地图扫描注解

  导入tk。我的巴蒂斯。春天。注释。映射器扫描;@ spring boot Application @ MapperScan( com。弹簧靴。道’)公共类应用扩展spring bootservletinitializer { public static void main(String[]args){ spring Application。运行(应用程序。class,args);}}其中com.springboot.dao是大刀层的路径。

  3、模型添加注解

  添加桌子注解和身份注解,

  不清楚例如下方的用户实体:

  @Table(name=t_user )公共类用户{ //主键@ Id @生成的值(策略=生成类型.身份)//自增私有整数id;}4、创建MyMapper

  导入tk。我的巴蒂斯。制图师。常见。ids映射器;导入tk。我的巴蒂斯。制图师。常见。映射器;公共接口MyMapperT扩展了MapperT,IdsMapperT {}需要实现的通用接口都写在MyMapper的继承类中,该类的包不能被地图扫描扫描到。

  MapperTIdsMapperT5,每个大刀继承步骤四的MyMapper

  例如数据层继承MyMapperUser:

  公共接口数据层扩展了MyMa

  pper<User> {}

  

  

通用service

上面配置只是调用dao层可以有默认的增删改查的方法,还是要在对应的service添加增删查改,所以需要写一个通用service,把公共的方法都抽象到一个基础方法中。

  BaseService.java接口:

  

public interface BaseService<T> { /** * 查询所有 * * @return 返回所有数据 */ List<T> 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 BaseServiceImpl<T> implements BaseService<T> { @Autowired private MyMapper<T> mapper; @Override public List<T> 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); }}
所有的serviceserviceImpl都分别继承BaseServiceBaseServiceImpl,例如UserServiceUserServiceImpl分别继承BaseServiceBaseServiceImpl:

  

public interface UserService extends BaseService<User>{}
@Servicepublic class UserServiceImpl extends BaseServiceImpl<User> 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 List<User> list() { List<User> list = userService.list(); return list; }}

  

总结

  

通用mapper:

创建SpringBoot启动文件添加MapperScan,扫描dao层的包。创建MyMapper<T>接口,根据自己需求继承要用的接口,比如Mapper<T>。每个dao接口继承MyMapper<T>接口。

通用service

创建BaseService接口。BaseServiceImpl实现类,调用MyMapper<T>实现增删改查方法。每个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的文章就介绍到这了,更多相关SpringBoot整合Mapper内容请搜索盛行IT以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: