说明
为了简化开发,可以集成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