說明
為了簡化開發,可以集成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