Springboot集成通用Mapper

通用mapper

通用Mapper:可以实现自动拼接sql语句;所有的mapper都不需要编写任何方法也就是不用编写sql语句。可以提高开发效率。

  • 添加启动器依赖;
  • 改造UserMapper继承Mapper;
  • 修改启动引导类Application中的Mapper扫描注解;
  • 修改User实体类添加jpa注解;
  • 改造UserService实现业务功能;

1. 通用Mapper的作者也为自己的插件编写了启动器,我们直接引入即可。在项目的 pom.xml 文件中加入如下依赖:

<!-- 通用mapper -->
<dependency>
    <groupId>tk.mybatis</groupId>
    <artifactId>mapper-spring-boot-starter</artifactId>
    <version>2.1.5</version>
</dependency>

注意:一旦引入了通用Mapper的启动器,会覆盖Mybatis官方启动器的功能,因此需要移除对官方Mybatis启动器的依赖。(对应步骤2.3)

2. 编写UserMapper 继承通用Mapper ( 导包是 tk.mybatis )

无需任何配置就可以使用了。如果有特殊需要,可以到通用mapper官网查看:https://github.com/abel533/Mapper/wiki/3.config
编写 \mapper\UserMapper.java 如下:

注意这里的导包 是 tk.mybatis.mapper.common.Mapper

package com.javaclimber.mapper;
import com.javaclimber.pojo.User;
import tk.mybatis.mapper.common.Mapper;

public interface UserMapper extends Mapper<User> {

}

3. 把启动类上的@MapperScan注解修改为通用mapper中自带的:

在这里插入图片描述

4 在User实体类上加JPA注解 修改 \pojo\User.java 如下:

package com.javaclimber.pojo;

import lombok.Data;
import tk.mybatis.mapper.annotation.KeySql;

import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;

@Data  //在编译阶段会根据注解自动生成对应的方法;data包含get/set/hashCode/equals/toString等方法
@Table(name = "tb_user")  //代表映射哪张表
public class User {

    @Id   // 说明是主键
    @KeySql(useGeneratedKeys = true)  //主键回填 (添加操作把自增的 id返回给新添加的用户对象)
    private Long id;

    // user_name ==> userName   如果数据库里是驼峰式命名会自动映射
    private String userName;

    //@Column("abc")  如果数据库密码这一列名字是abc  通过配置 @Column 就可以映射过来
    private String password;

    private String name;

    private Integer age;

    private Integer sex;

    private Date birthday;

    private String note;

    private Date created;

    private Date updated;

}

5 对 UserService 的代码进行简单改造

对userMapper调用的各种查询方法,在通用mapper里就都定义好了

package com.javaclimber.service;


import com.javaclimber.mapper.UserMapper;
import com.javaclimber.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;

    // 根据id查询
    public User queryById(Long id){
        return userMapper.selectByPrimaryKey(id); // 通用mapper里的根据主键查找
    }

    // 新增保存用户
    @Transactional
    public void saveUser(User user){
        System.out.println("新增用户");
        // userMapper.insert(user);  // user所有属性都在sql语句里  不管是否 非空
        userMapper.insertSelective(user);  // 选择添加  属性为空的column 不会出现在sql语句中
    }
}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值