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