龙空技术网

《放弃Mybatis使用tkMybatis》

代码vs生活 10519

前言:

今天姐妹们对“springboot集成tkmybatis”都比较重视,大家都想要了解一些“springboot集成tkmybatis”的相关知识。那么小编也在网摘上搜集了一些有关“springboot集成tkmybatis””的相关文章,希望咱们能喜欢,朋友们一起来了解一下吧!

一、初始tkMybatis

(1)简化sql语句,取消使用mapper.xml文件。

(2)方便统一管理,简化代码,取消臃肿的代码。

二、springboot集成tkMybatis步骤

(1)、引入TkMybatis的Maven依赖。

(2)、配置对应实体类(表对应的实体)。

(3)、Mapper集成tkMybatis的Mapper接口。

(4)、启动类注解@MapperScan扫描Mapper接口。

(5)、在application.yml配置文件,指定mapper.xml文件路径。(可省略)

(6)、使用TkMybatis提供的sql执行方法。

三、接入TkMybatis

(1)、导入maven

<dependency>            <groupId>tk.mybatis</groupId>            <artifactId>mapper-spring-boot-starter</artifactId>            <version>2.1.0</version></dependency> <dependency>            <groupId>tk.mybatis</groupId>            <artifactId>mapper</artifactId>            <version>4.0.3</version>  </dependency>

(2)、表对应的实体类

package com.cloud.user.entity;import lombok.Builder;import lombok.Data;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.Table;import java.io.Serializable;@Data@Builder/** * 表名称和实体类名驼峰名称一直时可以不适用@Table * 如:表面 user_info --->  实体类 UserInfo */@Table(name = "user_info")public class UserInfo implements Serializable {    /**     *  表主键   @Id :表示该字段是表主键     * @GeneratedValue : 主键生成策略     * generator="jdbc" :会自动将主键id填充到实体类中.类似普通mapper.xml中配置的selectKey标签     */    @Id    @GeneratedValue(strategy = GenerationType.IDENTITY,generator = "jdbc")    private Long uid;    private String account;    private String password;    private String salt;    private Integer accountType;    private Integer sex;    private  String phone;}

注:

1.1、@GeneratedValue:strategy主键生成策略。

1.1.1、GenerationType.TABLE:使用表生产主键,即使用另外一张表单独维护主键。使用如下:

@Table(name = "user_info")public class UserInfo implements Serializable {    /**     *  表主键   @Id :表示该字段是表主键     * @GeneratedValue : 主键生成策略     * strategy = GenerationType.TABLE : 自定义主键表,必须结合@TableGenerator使用     * TableGenerator : 主键表相关参数配置     */    @Id    @GeneratedValue(strategy = GenerationType.TABLE,generator = "userSeq")    @TableGenerator(name = "userSeq" ,allocationSize = 1,table = "user_seq_table",pkColumnName = "user_seq_id",valueColumnName = "seq_value")    private Long uid;

1.1.2、GenerationType.SEQUENCE:序列化对象成主键,多用于不支持主键自增或者自动生成主键的数据库(Oracle)。使用如下:

@Table(name = "user_info")public class UserInfo implements Serializable {    /**     *  表主键   @Id :表示该字段是表主键     * @GeneratedValue : 主键生成策略     * strategy = GenerationType.SEQUENCE : 序列化生成主键,必须结合@SequenceGenerator使用     * SequenceGenerator : 序列化生成主键方式     */    @Id    @GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "userSeq")    @SequenceGenerator(name = "userSeq" ,initialValue = 1,allocationSize = 1,sequenceName = "user_seq")    private Long uid;

1.1.3、GenerationType.IDENTITY: 主键自增

@Table(name = "user_info")public class UserInfo implements Serializable {    /**     *  表主键   @Id :表示该字段是表主键     *  strategy = GenerationType.IDENTITY : 主键自增 mysql 中的 auto_increment     */    @Id    @GeneratedValue(strategy =GenerationType.IDENTITY  )    private Long uid;

1.1.4、GenerationType.AUTO:自动创建主键(以上三种策略任选一种)

@Table(name = "user_info")public class UserInfo implements Serializable {    /**     *  表主键   @Id :表示该字段是表主键     *  strategy = GenerationType.AUTO : 主键生成策略交给持久化引擎自动处理,     *  持久化引擎会根据数据库在以上三种生成策略中任选一个     */    @Id    @GeneratedValue(strategy =GenerationType.AUTO  )    private Long uid;

(3)、集成tkMybatis的Mapper接口

import com.cloud.user.entity.UserInfo;import tk.mybatis.mapper.common.Mapper;/** * 接入 tk-mybatis * */public interface UserInfoMapper extends Mapper<UserInfo> {}

(4)、启动类注解@MapperScan扫描Mapper接口

import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;import org.springframework.cloud.openfeign.EnableFeignClients;import tk.mybatis.spring.annotation.MapperScan;/** *  * 2020-05-06 * */@EnableDiscoveryClient@EnableFeignClients@MapperScan(basePackages = {"com.cloud.user.mapper"})@SpringBootApplicationpublic class UserApplication {    public static void main(String[] args) {        SpringApplication.run(UserApplication.class, args);    }}

(5)、在application.yml配置文件,指定mapper.xml文件路径。(可省略)

    # mybatis mybatis:  configLocation: classpath:mybatis-config.xml  mapperLocations: classpath:mappers/*.xml

(6)、业务层调用

/** * 业务层 * 2020-05-06 * */public class UserInfoServiceImpl implements UserInfoService {    @Autowired    private UserInfoMapper userInfoMapper;    @Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class,timeout = 10)    @Override    public UserInfo getUserInfo(Long uid) {        return userInfoMapper.selectByPrimaryKey(uid);    }}

总结:

(1)接入比较方便,常见CRUD 都已经封装完成。接入即可使用。

(2)无需再去维护xml 。不需要关注sql的使用。

(3)提升开发效率。

标签: #springboot集成tkmybatis