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();
}
}

tkMybatis和Mybatis Generator的结合使用的更多相关文章

  1. springboot中通用mapper结合mybatis generator的使用

    通用mapper就是指的是  tk.mybatis  包下的.这个是通用mapper就是说自动生成的dao层需要继承这个框架提供的mapper类.而我们之前用的org.mybatis这个最开始是普通的 ...

  2. mybatis Generator生成代码及使用方式

    本文原创,转载请注明:http://www.cnblogs.com/fengzheng/p/5889312.html 为什么要有mybatis mybatis 是一个 Java 的 ORM 框架,OR ...

  3. 使用MyBatis Generator自动创建代码(dao,mapping,poji)

    连接的数据库为SQL server2008,所以需要的文件为sqljdbc4.jar 使用的lib库有: 在lib库目录下新建一个src文件夹用来存放生成的文件,然后新建generatorConfig ...

  4. mybatis generator 自动生成dao层映射代码

    资源: doc url :http://www.mybatis.org/generator/ download:https://github.com/mybatis/generator/release ...

  5. mybatis generator maven插件自动生成代码

    如果你正为无聊Dao代码的编写感到苦恼,如果你正为怕一个单词拼错导致Dao操作失败而感到苦恼,那么就可以考虑一些Mybatis generator这个差价,它会帮我们自动生成代码,类似于Hiberna ...

  6. mybatis generator.xml 配置 自动生成model,dao,mapping

    generator.xml文件: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE gener ...

  7. Mybatis generator的使用

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration ...

  8. MyBatis Generator作为maven插件自动生成增删改查代码及配置文件例子

    什么是MyBatis Generator MyBatis Generator (MBG) 是一个Mybatis的代码生成器,可以自动生成一些简单的CRUD(插入,查询,更新,删除)操作代码,model ...

  9. 记一次 IDEA mybatis.generator 自定义扩展插件

    在使用 idea mybatis.generator 生成的代码,遇到 生成的代码很多重复的地方, 虽然代码是生成的,我们也不应该允许重复的代码出现,因为这些代码后期都要来手动维护. 对于生成时间戳注 ...

随机推荐

  1. 存储池与存储卷,使用virt-install创建虚拟机

    原文链接:https://www.cnblogs.com/zknublx/p/9199658.html 创建存储池 1.建立存储池的目录 mkdir /kvm/images 2.为了安全性,更改目录的 ...

  2. rcp

    rcp的命令 rcp,远程文件复制.rcp既可以在本地主机和远程主机之间进行文件复制,也可以用于在两个远程主机之间进行文件复制.除了复制文件外,rcp也可以用于目录复制,只需要加参数-r. rcp的命 ...

  3. Linux权限之/etc/passwd文件

    在Linux /etc/passwd文件中每个用户都有一个对应的记录行,它记录了这个用户的一些基本属性.系统管理员经常会接触到这个文件的修改以完成对用户的管理工作.这个文件对所有用户都是可读的.但是L ...

  4. Leecode统计子串个数(java)

    /** 获取一个字符串在另一个字符串中出现的次数.判断str2在str1中出现的次数 */ public class StringExer2 { public static void main(Str ...

  5. myblogplus 第二期 慕舲原创 如何删除官方在你博客内设置的所有广告

    问题描述: 文章下方广告渐多了起来,这也无可厚非,原来只有小小一幅的,毕竟博客园团队很卖力,博客园首页不是在更新吗,博问也在推广(虽然解答者不多,提问者很多) 不过无疑很影响美观,那些可以让他设置,不 ...

  6. jQuery源码分析系列(二)Sizzle选择器引擎-上

    前言 我们继续从init()方法中的find()方法往下看, jQuery.find = Sizzle; ... find: function (selector) { /** ... */ ret ...

  7. 从零开始的SpringBoot项目 ( 五 ) 整合 Swagger 实现在线API文档的功能

    综合概述 spring-boot作为当前最为流行的Java web开发脚手架,越来越多的开发者选择用其来构建企业级的RESTFul API接口.这些接口不但会服务于传统的web端(b/s),也会服务于 ...

  8. PostgreSQL在不同的表空间移动数据文件

    一.背景 在工作中,可能会遇到将表从一个表空间移动另一个表空间.例如 * 对数据进行冷处理 * 表空间所在的磁盘空间不足 * 建表时分配错了表空间 以上等等,可能需要你将一个表移动表空间. 二.表空间 ...

  9. Laravel Facade原理及使用

    Laravel Facade原理及使用 laravel过于庞大,加之笔者水平有限,所以后面的源码解读会按模块功能介绍,希望能帮大家稍微捋顺下思路,即使能够帮助大家回顾几个函数也好.如发现错误,还望指正 ...

  10. Android开发,java开发程序员常见基础面试题,更换两个变量的值,java逻辑代码

    public class abswitch{ public static void main (String args []){ //author:qq986945193 int a=1; int b ...