1. 什么是TkMyBatis

TkMyBatis是一个MyBatis的通用Mapper工具

2. 引入TkMyBatis到SpringBoot项目

以Gradle为例

compile 'tk.mybatis:mapper-spring-boot-starter:2.0.3'

3. 基本用法

  1. 创建模型类(不需要注解)
  2. 创建Mapper接口,并继承tk.mybatis.mapper.common.Mapper(不需要注解)
  3. 注册Mapper 通过MapperScan(tk包非MyBatis包)注解来注册全部的Mapper

示例:

package bj;

import lombok.Data;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.ApplicationListener;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.spring.annotation.MapperScan;

import javax.annotation.Resource;
import javax.persistence.Column;
import javax.persistence.Id;
import java.util.Date;

/**
 * Created by BaiJiFeiLong@gmail.com at 2018/6/26 下午1:51
 */
@SpringBootApplication
@MapperScan(basePackageClasses = App.class)
public class App implements ApplicationListener<ApplicationReadyEvent> {

    @Resource
    private PersonMapper personMapper;

    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }

    @Override
    public void onApplicationEvent(ApplicationReadyEvent event) {
        System.out.println("selectAll");
        System.out.println(personMapper.selectAll());
        System.out.println("selectByPrimaryKey");
        System.out.println(personMapper.selectByPrimaryKey(6));
    }
}

@Data
class Person {
    @Id
    private Integer id;
    private String username;
    private String firstName;
    private Date createdAt;
    @Column(name = "the_remark")
    private String remark;
}

interface PersonMapper extends Mapper<Person> {
}

4. 模型类中的注解

TkMyBatis主要使用的是Jpa注解。一般情况下,如果模型属性与数据库名称一样的话,不需要特殊配置。

如果数据库用下划线命名法,模型类用驼峰命名法,不需要设置,TkMyBatis默认开启转换。

数据库字段与模型字段通过命名转换仍然不匹配的话,需要使用@Column(name = "the_name")来进行关联

如果需要用到TkMyBatis提供的主键相关方法,则需要在模型类中注解主键,比如@Id

5. 具体用法

集成Mapper接口后,我们的Mapper接口就有了大量的基础增删该查接口

  • selectAll 查询全部记录
  • selectByPrimaryKey 查询主键
  • insert 插入一条记录(每个字段都会反映在SQL中)
  • insertSelective 插入一条记录,值为null的字段不反映在SQL中,给数据库使用默认值的机会

文章首发链接:https://baijifeilong.github.io/2018/06/27/tkmybatis/

TkMyBatis大杂烩的更多相关文章

  1. Html菜鸡大杂烩

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  2. ASP.NET Web API 入门大杂烩

    [前言] 本文是大杂烩,意思即是:到处Copy再加一点点思考而混在一起的文章,引用来源因为太多太杂故而省略,望原作者原谅. [概述] ASP.NET Web API随ASP.NET MVC 4一起发行 ...

  3. iOS小知识点大杂烩

    转自OPEN经验 1,打印View所有子视图 po [[self view]recursiveDescription] 2,layoutSubviews调用的调用时机 * 当视图第一次显示的时候会被调 ...

  4. ASP.NET开发大杂烩

    ASP.NET开发大杂烩 正巧今天遇到一个获取动态生成table中的一个动态生成的TextBox的值的时候总是findcontrol不到.后来经过我们的徐总,瞬间解决,但是我觉得对于一个页面的声明周期 ...

  5. C++学习笔记——大杂烩

    C++学习笔记--大杂烩                                                         by方阳 版权声明:本文为博主原创文章,转载请指明转载地址 h ...

  6. XMPP大杂烩

    XMPP大杂烩 对XMPP的理解 XMPP是基于XML的即时通讯协议.对即时通讯场景进行了高度抽象,比如用订阅对方的上下线状态表示好友.提供了文本通讯.用户上下线通知.联系人管理.群组聊天等功能,还可 ...

  7. MyBatis大杂烩

    1. 集成到SpringBoot项目中 核心依赖是org.mybatis.spring.boot:mybatis-spring-boot-starter,当然还需要jdbc和数据库驱动 build.g ...

  8. 大杂烩 -- 查找单向链表倒数第m个元素

    基础大杂烩 -- 目录 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 1.输入并查找 方案:头插法,正向查找第m个元素. ...

  9. 大杂烩 -- HashMap、HashTable、ConCurrentHashMap 联系与区别

    基础大杂烩 -- 目录 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 1. Hashtable 和 HashMap ⑴ ...

随机推荐

  1. Python基础-python基本语法(二)

    一.注释 分类:单行注释和多行注释 1.单行注释 单行注释以#开头,在当前行内,#后面的内容就是注释内容 2.多行注释 被两个   '''    或     ''''''    包括起来的内容就是注释 ...

  2. Yii2增删改查

    Controller <?php namespace frontend\controllers; use frontend\models\User; use yii\data\Paginatio ...

  3. 【CSS】自定义checkbox样式

    修改原生checkbox样式. 效果 原理 1.利用CSS3属性 appearance. 该属性(强制)更改(改变)默认(原生)样式. Firefox 支持替代的 -moz-appearance 属性 ...

  4. Python集合(set)类型的操作 (转)

    python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和 ...

  5. 如何禁用Chrome / Firefox /IE浏览器的Cookie

    Firefox: 点击菜单按钮并点击选项 按钮. 选择 隐私 面板. 将“Firefox 将会:”这一项设置为 使用自定义历史记录设置. 取消 接受来自站点的 Cookie 选项 即可禁用 Cooki ...

  6. Eigen子矩阵操作

    1 子矩阵操作简介 子矩阵操作又称块操作,在矩阵运算中,子矩阵的提取和操作应用也十分广泛.因此Eigen中也提供了相关操作的方法.提取的子矩阵在操作过程中既可以用作左值也可以用作右值. 2 块操作的一 ...

  7. jsp相关笔记(三)

    在往数据库的表中写入数据时,一定要与表中的每一项对应,比如表中有三项,则写入的值也应该是三类: String getTitle=request.getParameter("title&quo ...

  8. linux学习第十二天 (Linux就该这么学)找到一本不错的Linux电子书,附《Linux就该这么学》章节目录

    本书是由全国多名红帽架构师(RHCA)基于最新Linux系统共同编写的高质量Linux技术自学教程,极其适合用于Linux技术入门教程或讲课辅助教材,目前是国内最值得去读的Linux教材,也是最有价值 ...

  9. Oracle 触发器和序列的创建和使用 (自动增长列)

    -- 创建序列 create sequence 序列名称        start with 1 -- 起始值        increment by 1 -- 增量        maxvalue ...

  10. 安装及使用virtualenv

    安装tensorflow之virtualenv 在安装之前首先保证ubuntu.python,以及一些相应的包安装成功. 1.安装virtualenv#(1) pip $ sudo apt-get i ...