说明
为了简化开发,可以集成tk,tkmybatis是在mybatis框架的基础上提供了很多工具,让开发更加高效,下面来看看这个框架的基本使用,后面会对相关源码进行分析,感兴趣的同学可以看一下,挺不错的一个工具。
引入依赖
集成tkmybatis就不需要再次引入mybatis的相关包了,已经被封装提在tk中。
org.springframework.boot
spring-boot-starter-web
tk.mybatis
mapper-spring-boot-starter
2.1.5
mysql
mysql-connector-java
runtime
org.projectlombok
lombok
true
org.springframework.boot
spring-boot-starter-test
test
org.junit.vintage
junit-vintage-engine
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
importtk.mybatis.mapper.common.Mapper;importtk.mybatis.mapper.common.MySqlMapper;/***@authorlpg
* @description: 增强mapper基类,支持批量操作,其他mapper继承此mapper
* @date 2020/10/2 16:04*/
public interface BaseTkMapper extends Mapper, MySqlMapper{
}
MymallMapper.java
importcom.tk.mybatis.demo.entity.MymallRole;importorg.apache.ibatis.annotations.Mapper;
@Mapperpublic interface MymallMapper extends BaseTkMapper{
}
MymallService.java
importcom.tk.mybatis.demo.entity.MymallRole;importjava.util.List;public interfaceMymallService {
ListgetRoles();
}
MymallServiceImpl.java
importcom.tk.mybatis.demo.entity.MymallRole;importcom.tk.mybatis.demo.mapper.MymallMapper;importcom.tk.mybatis.demo.service.MymallService;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Service;importtk.mybatis.mapper.entity.Example;importjava.util.List;
@Servicepublic class MymallServiceImpl implementsMymallService {
@AutowiredprivateMymallMapper mymallMapper;
@Overridepublic ListgetRoles() {
Example example= new Example(MymallRole.class);
example.selectProperties("name","enabled");returnmymallMapper.selectByExample(example);
}
}
BaseTkEntity.java
packagecom.tk.base.common;importcom.fasterxml.jackson.annotation.JsonFormat;importlombok.Data;importorg.springframework.format.annotation.DateTimeFormat;importtk.mybatis.mapper.annotation.LogicDelete;importjavax.persistence.Column;importjava.util.Date;
@Datapublic abstract classBaseTkEntity {/*** 删除状态
* 0:未删除
* 1:已删除*/@Column(name= "deleted")
@LogicDelete(isDeletedValue= 1,notDeletedValue = 0)protectedBoolean deleted;/*** 创建时间*/@JsonFormat(pattern= "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern= "yyyy-MM-dd HH:mm:ss")
@Column(name= "create_time")protectedDate createTime;/*** 创建人*/@Column(name= "create_user")protectedString createUser;/*** 最近更新时间*/@JsonFormat(pattern= "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern= "yyyy-MM-dd HH:mm:ss")
@Column(name= "update_time")protectedDate updateTime;/*** 更新人*/@Column(name= "update_user")protectedString updateUser;/*** 设置创建人和创建时间
*
*@parambaseEntityObj baseEntity的子类对象
*@param 对象类型*/
public voidsetUserAndTime(T baseEntityObj) {this.createTime =baseEntityObj.getCreateTime();this.createUser =baseEntityObj.getCreateUser();this.updateTime =baseEntityObj.getUpdateTime();this.updateUser =baseEntityObj.getUpdateUser();
}
}
MymallRole.java
importlombok.Data;importjavax.persistence.Column;importjava.util.Date;
@Datapublic classMymallRoleextends BaseTkEntity
{private intid;privateString name;privateString desc;privateBoolean enabled;}
MyMallController.java
importcom.tk.mybatis.demo.service.MymallService;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RestController;
@RestControllerpublic classMyMallController {
@AutowiredprivateMymallService mymallService;
@GetMapping("mall")publicString getRoles(){returnmymallService.getRoles().toString();
}
}
验证测试
启动服务,浏览器输入http://localhost:8080/mall