首页后端开发其他后端知识快速整合SpringBoot通用Mapper的代码有哪些?

快速整合SpringBoot通用Mapper的代码有哪些?

时间2024-03-24 15:36:03发布访客分类其他后端知识浏览984
导读:今天就跟大家聊聊有关“快速整合SpringBoot通用Mapper的代码有哪些?”的内容,可能很多人都不太了解,为了让大家更加了解“快速整合SpringBoot通用Mapper的代码有哪些?”,小编给大家总结了以下内容,希望这篇文章能帮助大...
今天就跟大家聊聊有关“快速整合SpringBoot通用Mapper的代码有哪些?”的内容,可能很多人都不太了解,为了让大家更加了解“快速整合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.daodao层的路径。

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);

    }

}
    

所有的serviceserviceImpl都分别继承BaseServiceBaseServiceImpl,例如UserServiceUserServiceImpl分别继承BaseServiceBaseServiceImpl:

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
springboot项目后端请求Controller层如何处理? MySQL中的事务隔离是什么意思?隔离级别怎样分?

游客 回复需填写必要信息