您现在的位置是:群英 > 开发技术 > 编程语言
快速整合SpringBoot通用Mapper的代码有哪些?
Admin发表于 2022-10-12 17:46:40390 次浏览
今天就跟大家聊聊有关“快速整合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.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 MyMapper<T> extends Mapper<T>, IdsMapper<T> {
}

需要实现的通用接口都写在 MyMapper 的继承类中,该类的包不能被 MapperScan 扫描到。

Mapper<T>
IdsMapper<T>

5、每个 dao 继承步骤4的 MyMapper

例如 UserDao 继承 MyMapper<User> :

public interface UserDao extends MyMapper<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);
    }
}

所有的 service 和 serviceImpl 都分别继承 BaseService 和 BaseServiceImpl ,例如 UserService 和 UserServiceImpl 分别继承 BaseService 和 BaseServiceImpl :

public interface UserService extends BaseService<User>{
}
@Service
public 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的代码有哪些?的介绍啦,需要的朋友可以参考上述内容,希望对大家有帮助,想要了解更多,欢迎关注群英网络,小编将为大家输出更多高质量的实用文章!

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

相关信息推荐
2022-09-28 17:57:20 
摘要:这篇文章主要介绍了php有序列表或数组中删除指定的值的实现代码,删除给定的值之后,得到一个新的有序列表,长度-1,下面是具体的实现方法
2022-05-16 17:19:04 
摘要:表单是用来与用户做交流的一个网页控件,良好的表单设计能够让网页与用户更好的沟通。表单中常见的元素主要包括:文本输入框、下拉选择框、单选按钮、复选按钮、文本域和按钮等。
2022-08-27 17:03:54 
摘要:Webpack 是如何实现打包的?下面本篇文章就来带大家深入了解一下Webpack 打包原理,希望对大家有所帮助!
云活动
推荐内容
热门关键词
热门信息
群英网络助力开启安全的云计算之旅
立即注册,领取新人大礼包
  • 联系我们
  • 24小时售后:4006784567
  • 24小时TEL :0668-2555666
  • 售前咨询TEL:400-678-4567

  • 官方微信

    官方微信
Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
微信公众号
返回顶部
返回顶部 返回顶部