当前位置: 首页 > 后端技术 > Java

SpringBoot快速集成通用Mapper

时间:2023-04-01 23:42:55 Java

前言后端业务开发,每张表都需要使用单表的增删改查等常用方法,配置通用Mapper可以大大方便使用Mybatis单表增删改查操作。通用mapper配置1.添加maven:org.springframework.bootspring-boot-starter-webtk.mybatismapper-spring-boot-starter2.1.5com.github.pagehelperpagehelper-spring-boot-starter1.2.32.为Application添加MapperScan注解启动文件在springboot启动类中加入tk.mybatis包下的MapperScan注解importtk.mybatis.spring.annotation.MapperScan;@SpringBootApplication@MapperScan("com.springboot.dao")main(String[]args){SpringApplication.run(Application.class,args);}}其中com.springboot.dao是dao层的路径3.给Model添加注解添加Table注解和Id注解,Table填写数据表名id写在主键字段上。例如下面的User实体:@Table(name="t_user")publicclassUser{//Primarykey@Id@GeneratedValue(strategy=GenerationType.IDENTITY)//自增privateIntegerid;}4.创建MyMapperimporttk.mybatis.mapper.common.IdsMapper;importtk.mybatis.mapper.common.Mapper;publicinterfaceMyMapperextendsMapper,IdsMapper{}需要的通用接口要实现的都写在MyMapper的继承类中,MapperScan无法扫描到该类的包。Mapper包含大量的单表操作。IdsMapper是一种通过多个id查询和删除的方法。5、每个dao都继承了第4步的MyMapper,比如UserDao继承了MyMapper:publicinterfaceUserDaoextendsMyMapper{}。服务增删改查,所以需要写一个通用的服务,把所有的公共方法抽象成一个基本方法。BaseService.javainterface:publicinterfaceBaseService{/***查询全部**@return返回所有数据*/ListselectAll();/***查询数据个数*@return*/intselectCount();/***添加**@paramt实体**@return*/intsave(Tt);/***修改**@paramt*entity*@return*/intupdateByPrimaryKey(Tt);/***根据主键删除**@paramt主键**@return*/intdeleteByPrimaryKey(intt);}BaseServiceImpl实现类:publicclassBaseServiceImplimplementsBaseService{@AutowiredprivateMyMapper映射器;@OverridepublicListselectAll(){returnmapper.selectAll();}@OverridepublicintselectCount(){returnmapper.selectCount(null);}@Overridepublicintsave(Tt){returnmapper.insert(t);}@OverridepublicintupdateByPrimaryKey(Tt){返回mapper.updateByPrimaryKey(t);}@OverridepublicintdeleteByPrimaryKey(intt){returnmapper.deleteByPrimaryKey(t);}}所有服务和serviceImpl分别继承BaseService和BaseServiceImpl,例如UserService和UserServiceImpl分别继承BaseService和BaseServiceImpl:publicinterfaceUserServiceextendsBaseService{}@ServicepublicclassUserServiceImplextendsBaseServiceImplimplementsUserService{}配置后完成后,调用相应的controller,如UserController:@RestController@RequestMapping("/user")publicclassUserController{@AutowiredprivateUserServiceuserService;@PostMapping("/add")publicObjectadd(Useruser){userService.save(user);返回空值;}@PostMapping("/delete")publicObjectdelete(@RequestParamIntegerid){userService.deleteByPrimaryKey(id);返回空值;}@PostMapping("/update")公共对象更新(用户用户){使用rService.updateByPrimaryKey(用户);返回空值;}@GetMapping("/detail")publicUserdetail(@RequestParamIntegerid){Useruser=userService.selectById(id);返回用户;}@GetMapping("/list")publicListlist(){Listlist=userService.list();返回列表;}}总结一下通用的mapper:创建一个SpringBoot启动文件添加MapperScan,扫描dao层的包创建一个MyMapper接口,根据自己的需要继承要使用的接口,比如Mapper.每个dao接口都继承了MyMapper接口。通用服务创建BaseService接口。BaseServiceImpl实现类调用MyMapper实现增删改查方法。每个服务接口和服务实现类分别继承BaseService接口和BaseServiceImpl实现类。每个控制器都可以调用公共方法。遇到的问题1.启动时报错。需要找不到类型为“com.jeremy.data.utils.MyMapper”的bean。没有找到MyMapper对应的bean,无法注入。解决方法:1、在SpringBoot启动文件中添加MapperScan注解。2.每个dao接口必须继承MyMapper。以上两步缺一不可。github源https://github.com/jeremylai7/springboot-bootstrap