Springboot集成通用mapper、XML、service《spring boot学习五》

1. springmvc之mapper.xml的痛

​ 一般情况下都是一个类写一个xml或者说即使N个类共用一个XML,其实对于开发者的工作量也是很大的,前期倒没有什么,因为可以用自动生成工具来生成,但是后期,如果要添加什么字段或者修改字段的话,对于我们来说真的太恶心了

​ 所以能不能有一个共用的方法,也就是共用的mapper或者service等让开发者少一些开发量,我们来自己封装一个共用的mapper mapper.xml service serviceImpl

1.  封装过程是基于对象中添加自定义注解,然后通过反射解析Class动态生成sql实现,
		不要和Mybatis API的SqlSession中的方法混淆,
2.  并且SpringBoot集成Mybatis后不要轻易使用SqlFactory和SqlSession,
		原因可参看Mybatis API
	   (http://www.mybatis.org/spring/zh/using-api.html),如下:

3.  它不会参与到 Spring 的事务之中。
		如果 SqlSession 使用 DataSource,它也会被 Spring 事务管理器使用,
			而且当前 有事务在进行时,这段代码会抛出异常。
4.  MyBatis 的 DefaultSqlSession 是线程不安全的。
            如果在 bean 中注入了它,就会 发生错误。
            使用 DefaultSqlSession 创建的映射器也不是线程安全的。
            如果你将它们注入到 bean 中,是会发生错误的。
            你必须保证在 finally 块中来关闭 SqlSession。

项目地址:传送门

2. 确定这些需求之后,我们开始设计数据库
CREATE TABLE `mapper` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `name` varchar(20)   NOT NULL,
  `sex` int(1) ,
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;


重点来了,既然mapper.xml都想共用,那么我们需要在传参的时候就指定数据库名称还有每个成员变量对应得字段,那这些放到哪里合适呢?

答案:在每个实体类中指定

//注意:
//    使用注解编写对象类@Table为表名,@Id为主键,@Column为列名,
//    注意@Id和@Column需要定义在get方法上。

@Table(value = "mapper")
//表的名称
public class MapperDO {

//    使用注解编写对象类@Table为表名,@Id为主键,@Column为列名,
//    注意@Id和@Column需要定义在get方法上。
    private Integer id ;

    private  String name ;

    private Integer sex ;

    @Id(value = "ID")
    public Integer getId() {
        return id;
    }


    public void setId(Integer id) {
        this.id = id;
    }
    @Column(value = "name")
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    @Column(value = "sex")
    public Integer getSex() {
        return sex;
    }

    public void setSex(Integer sex) {
        this.sex = sex;
    }

    @Override
    public String toString() {
        return "MapperDO{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", sex=" + sex +
        
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值