springboot集成tk mybatis


說明

為了簡化開發,可以集成tk,tkmybatis是在mybatis框架的基礎上提供了很多工具,讓開發更加高效,下面來看看這個框架的基本使用,后面會對相關源碼進行分析,感興趣的同學可以看一下,挺不錯的一個工具。

引入依賴

集成tkmybatis就不需要再次引入mybatis的相關包了,已經被封裝提在tk中。

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper-spring-boot-starter</artifactId>
            <version>2.1.5</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

application.properties

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mymall?useUnicode=true&characterEncoding=utf8&autoReconnect=true&rewriteBatchedStatements=true&serverTimezone=UTC&useSSL=false&allowMultiQueries=true
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

mybatis.type-aliases-package=com.tk.mybatis.demo.entity

logging.level.com.tk = debug

BaseTkMapper.java

import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;

/**
 * @author lpg
 * @description: 增強mapper基類,支持批量操作,其他mapper繼承此mapper
 * @date 2020/10/2 16:04
 */
public interface BaseTkMapper<T> extends Mapper<T>, MySqlMapper<T> {
}

MymallMapper.java

import com.tk.mybatis.demo.entity.MymallRole;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface MymallMapper extends BaseTkMapper<MymallRole> {
}

MymallService.java

import com.tk.mybatis.demo.entity.MymallRole;

import java.util.List;

public interface MymallService {

    List<MymallRole> getRoles();
}

MymallServiceImpl.java

import com.tk.mybatis.demo.entity.MymallRole;
import com.tk.mybatis.demo.mapper.MymallMapper;
import com.tk.mybatis.demo.service.MymallService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import tk.mybatis.mapper.entity.Example;

import java.util.List;

@Service
public class MymallServiceImpl implements MymallService {

    @Autowired
    private MymallMapper mymallMapper;
    @Override
    public List<MymallRole> getRoles() {
        Example example = new Example(MymallRole.class);
        example.selectProperties("name","enabled");
        return mymallMapper.selectByExample(example);
    }
}

BaseTkEntity.java

package com.tk.base.common;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import tk.mybatis.mapper.annotation.LogicDelete;

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

@Data
public abstract class BaseTkEntity {
    /**
     * 刪除狀態
     * 0:未刪除
     * 1:已刪除
     */
    @Column(name = "deleted")
    @LogicDelete(isDeletedValue = 1,notDeletedValue = 0)
    protected Boolean deleted;

    /**
     * 創建時間
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Column(name = "create_time")
    protected Date createTime;

    /**
     * 創建人
     */
    @Column(name = "create_user")
    protected String createUser;

    /**
     * 最近更新時間
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Column(name = "update_time")
    protected Date updateTime;

    /**
     * 更新人
     */
    @Column(name = "update_user")
    protected String updateUser;

    /**
     * 設置創建人和創建時間
     *
     * @param baseEntityObj baseEntity的子類對象
     * @param <T>           對象類型
     */
    public <T extends BaseTkEntity> void setUserAndTime(T baseEntityObj) {
        this.createTime = baseEntityObj.getCreateTime();
        this.createUser = baseEntityObj.getCreateUser();
        this.updateTime = baseEntityObj.getUpdateTime();
        this.updateUser = baseEntityObj.getUpdateUser();
    }
}

 

MymallRole.java

import lombok.Data;

import javax.persistence.Column;
import java.util.Date;
@Data
public class MymallRole extends BaseTkEntity
{ 

  private int id;

  private String name;

  private String desc;

  private Boolean enabled;
}

MyMallController.java

import com.tk.mybatis.demo.service.MymallService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MyMallController {
    @Autowired
    private MymallService mymallService;

    @GetMapping("mall")
    public String getRoles(){
        return mymallService.getRoles().toString();
    }
}

驗證測試

啟動服務,瀏覽器輸入http://localhost:8080/mall

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM