前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《放弃Mybatis使用tkMybatis》

《放弃Mybatis使用tkMybatis》

作者头像
IT大咖说
发布2020-05-19 17:47:50
7K0
发布2020-05-19 17:47:50
举报
文章被收录于专栏:IT大咖说IT大咖说

一、初始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

代码语言:javascript
复制
<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)、表对应的实体类

代码语言:javascript
复制
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:使用表生产主键,即使用另外一张表单独维护主键。使用如下:

代码语言:javascript
复制
@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)。使用如下:

代码语言:javascript
复制
@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: 主键自增

代码语言:javascript
复制
@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:自动创建主键(以上三种策略任选一种)

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

(3)、集成tkMybatis的Mapper接口

代码语言:javascript
复制
import com.cloud.user.entity.UserInfo;
import tk.mybatis.mapper.common.Mapper;

/**
 * 接入 tk-mybatis
 *
 */
public interface UserInfoMapper extends Mapper<UserInfo> {

}

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

代码语言:javascript
复制
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"})
@SpringBootApplication
public class UserApplication {

    public static void main(String[] args) {
        SpringApplication.run(UserApplication.class, args);
    }

}

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

代码语言:javascript
复制
    # mybatis
mybatis:
  configLocation: classpath:mybatis-config.xml
  mapperLocations: classpath:mappers/*.xml

(6)、业务层调用

代码语言:javascript
复制
/**
 * 业务层
 * 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)提升开发效率。

来源:

https://www.toutiao.com/i6823686018642739716/

“IT大咖说”欢迎广大技术人员投稿,投稿邮箱:aliang@itdks.com

来都来了,走啥走,留个言呗~

IT大咖说 | 关于版权

由“IT大咖说(ID:itdakashuo)”原创的文章,转载时请注明作者、出处及微信公众号。投稿、约稿、转载请加微信:ITDKS10(备注:投稿),茉莉小姐姐会及时与您联系!

感谢您对IT大咖说的热心支持!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT大咖说 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档