tkMybatis配置

tkmybatis是基于Mybatis框架开发的一个工具,通过调用它提供的方法实现对单表的数据操作,以免写任何sql语句。

tkMybatis通常与Mybatis以及Mybatis Generator结合使用,实现数据库Model和Mapper的自动化创建的同时方便对单表进行操作。

  • 引入依赖

<dependencies>中引入依赖

            <dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.0.3</version>
</dependency>

<build><plugins>中添加mybatis generator和tkmybatis相关依赖

            <plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.6</version>
<configuration>
<configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml
</configurationFile>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.29</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>4.0.0</version>
</dependency>
</dependencies>
</plugin>
  • 配置Mybatis Generator

    在你的resources文件夹中创建generator文件夹,并创建generatorConfig.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <generatorConfiguration> <context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat">
<property name="javaFileEncoding" value="UTF-8"/>
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/> <plugin type="tk.mybatis.mapper.generator.MapperPlugin">
<property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>
</plugin> <!-- 数据源配置 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/table"
userId="root"
password="1234">
</jdbcConnection> <!-- 实体生成路径 -->
<javaModelGenerator targetPackage="com.example.entity" targetProject="src/main/java"/> <!-- xml配置文件生成路径 -->
<sqlMapGenerator targetPackage="mapper.xml" targetProject="src/main/resources"/> <!-- Mapper文件生成位置 -->
<javaClientGenerator targetPackage="com.example.mapper" targetProject="src/main/java"
type="XMLMAPPER"/> <!-- 对要进行自动生成的表进行配置 -->
<table tableName="t_order" domainObjectName="Order">
<generatedKey column="id" sqlStatement="Mysql" identity="true"/>
</table>

注:现在Mysql的的最新数据源驱动为com.mysql.cj.jdbc.Driver,如要使用该驱动,mysql-connector-java的版本请选择8.0以上版本

配置完成后,可以在Maven命令中找到mybatis-generator实现自动生成

  • tkmybatis的使用

    tkmybatis.mapper.common.Mapper提供了单表操作的各种方法,如下所示:
@RegisterMapper
public interface Mapper<T> extends BaseMapper<T>, ExampleMapper<T>, RowBoundsMapper<T>, Marker {
}

则可以直接使用该类,并调用接口方法实现SQL

public abstract class BaseService<T> {

    @Autowired
protected Mapper<T> mapper; //主键查询
public T findOne(Object key) {
return mapper.selectByPrimaryKey(key);
} // 条件查询
public List<T> find(Criteria<T> criteria) {
return mapper.selectByExample(criteria.example());
}
}

同时实现条件查询,可以继承tk.mybatis.mapper.entity.SqlsCriteria和使用Sqls.Criteria来实现

思路就是利用Criteria来构建条件,再转化成Example来实现。

也可以通过Example.createCriteria()来构建Example,不过灵活性稍差

public class Criteria<T> implements tk.mybatis.mapper.entity.SqlsCriteria
{
private Sqls.Criteria criteria; private Class<T> clas; private Criteria(Class<T> clas) {
this.clas = clas;
this.criteria = new Sqls.Criteria();
} public static <T> Criteria<T> getInstance(Class<T> clas) {
return new Criteria<>(clas);
} public Criteria<T> andIsNull(String property) {
this.criteria.getCriterions().add(new Sqls.Criterion(property, "is null", "and"));
return this;
} //通过Lambda表达式获得字段名
public Criteria<T> andIsNull(Fn<T, Object> fn) {
return this.andIsNull(Reflections.fnToFieldName(fn));
} @Override
public Sqls.Criteria getCriteria() {
return criteria;
} //转换成example
public Example example() {
//根据criteria构建Example
Example.Builder where = new Example.Builder(clas).where(this);
return where.build();
}
}

最新文章

  1. GJM :Unity使用EasyAR实现脱卡功能
  2. zepto.js学习
  3. 初学嵌入式STM32基础下选哪款开发板适合学习
  4. java properties读取与设值
  5. ViewPage显示Fragment集合实现左右滑动并且出现tab栏--第三方开源--SlidingTabLayout和SlidingTabStrip实现
  6. GXPT(一)——UI设计
  7. [原创]Android应用 - YE启动器APP(YeLauncherApp)
  8. CSS基本知识介绍
  9. scanf()常犯错误
  10. ue4中窗口打开web地址
  11. MySQL开发总结(有点长..耐心看)
  12. SpringBoot-MongoDB 索引冲突分析及解决
  13. oracle 当前年到指定年的年度范围求取
  14. WPFToolkit DataGrid 使用介绍zz
  15. Python Built-in Function 学习笔记
  16. centos7学习笔记-安装后的一些配置
  17. blfs(systemv版本)学习笔记-安装、配置和使用wpa_supplicant无线网络连接工具
  18. 通过创建临时表合并某一个库的hive小文件
  19. C语言lseek()函数:移动文件的读写位置
  20. hbase源码系列(八)从Snapshot恢复表

热门文章

  1. 编译u-boot时候,make distclean 出现rm:无法删除,****是一个目录
  2. SQL关键字的执行顺序
  3. Hop: Heterogeneity-aware Decentralized Training
  4. 牛客网PAT练习场-数素数
  5. Shell编程—结构化命令(2)
  6. Java数据结构——顺序表
  7. 方法在class文件中的存在形式MethodInfo
  8. 常用Oracle SQL集锦
  9. POJ - 3851-Wormholes(SPFA判负环)
  10. 微服务实战SpringCloud之Spring Cloud Feign替代HTTP Client