# Mybatis 高级用法和tk.mybatis使用

Mybatis 高级用法和tk.mybatis使用

文章目录

  • Mybatis 高级用法和tk.mybatis使用
    • 使用@SelectProvider、@InsertProvider、@UpdateProvider、@DeleteProvider
      • @SelectProvider
        • 使用例子
    • tk.mybatis
      • 引入依赖
      • 查询实现
        • 实体映射类
          • 实体类规范
        • dao层
        • 调用dao

使用@SelectProvider、@InsertProvider、@UpdateProvider、@DeleteProvider

  • MyBatis 3.x 版本提供了以下4CRUD的高级注解。

@SelectProvider:用于构建动态查询SQL

@InsertProvider:用于构建动态新增SQL

@UpdateProvider:用于构建动态更新SQL

@DeleteProvider:用于构建动态删除SQL

@SelectProvider

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Repeatable(SelectProvider.List.class)
public @interface SelectProvider {// 用于指定获取 sql 语句的指定类Class<?> type();// 指定类中要执行获取 sql 语句的方法String method();
}
使用例子
@Mapper
public interface TkUserMapper extends BaseMapper<TkUser> {@SelectProvider(type = TkUserMapperProvider.class, method = "selectById")List<TkUser> selectById(@Param("id") String id);class TkUserMapperProvider {public String selectById(@Param("id") String id) {SQL sql = new SQL();sql.SELECT("*");sql.FROM("TEST_USER");return sql.toString();}}
}

tk.mybatis

  • tkmybatis 是对底层 sql 进行了抽象封装,不需要考虑 sql 怎么写,只需要按照逻辑思维,遵循 tkmybatis 的语法即可实现数据库操作。

引入依赖

<!-- mybatis 通用 mapper -->
<!-- https://mvnrepository.com/artifact/tk.mybatis/mapper-spring-boot-starter -->
<dependency><groupId>tk.mybatis</groupId><artifactId>mapper-spring-boot-starter</artifactId><version>4.3.0</version>
</dependency>

查询实现

实体映射类
  • 建立实体类用@Table注解标注映射表名称
  • 注意字段表名称大小写问题。
@Table(name = "USER")
public class TkUser {private int id;private String username;private String password;private int gender;private int age;private int idcard;private int phone;// get set 省略
}
实体类规范
  • 表名默认使用类名,驼峰转下划线(只对大写字母进行处理),如UserInfo默认对应的表名为user_info

  • 表名可以使用@Table(name = “tableName”)进行指定,对不符合第一条默认规则的可以通过这种方式指定表名。

  • 字段默认和@Column一样,都会作为表字段,表字段默认为Java对象的Field名字驼峰转下划线形式。

  • 可以使用@Column(name = “fieldName”)指定不符合第3条规则的字段名。

  • 使用@Transient注解可以忽略字段,添加该注解的字段不会作为表字段使用。

  • 建议一定是有一个@Id注解作为主键的字段,可以有多个@Id注解的字段作为联合主键。

dao层
  • 单表操作,只需要继承 tk.mybatis 下的 Mapper 接口即可使用
    在这里插入图片描述
@Mapper
public interface TkUserMapper extends BaseMapper<TkUser> {@SelectProvider(type = TkUserMapperProvider.class, method = "selectById")List<TkUser> selectById(@Param("id") String id);class TkUserMapperProvider {public String selectById(@Param("id") String id) {SQL sql = new SQL();sql.SELECT("*");sql.FROM("TEST_USER");return sql.toString();}}
}
调用dao
@Autowired
private TkUserMapper tkUserMapper;@Override
public void test1() {String id = "1";List<TkUser> tkUserList =  tkUserMapper.selectById(id);log.info("test");
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/16766.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

eBay运营账号防关联成功的关键因素是什么?

一、什么是ebay eBay如今的发展现状呈现出积极且充满活力的态势。作为全球知名的在线拍卖和购物平台&#xff0c;随着全球消费者对线上购物的需求不断增长&#xff0c;这为卖家提供了广阔的市场空间和盈利机会&#xff0c;但多账号的运营若处理不好容易引起账号被关联&#xf…

基于生命周期评价法的农田温室气体排放估算;农田CH4和N2O排放模拟;农田碳库模型和土壤呼吸等

目录 专题一 温室气体排放模拟研究 专题二 农田CH4和N2O排放模拟 专题三 农田碳库模型和土壤呼吸 专题四 基于生命周期评价法的农田温室气体排放估算 专题五-六 基于过程模型的温室气体排放模拟 专题七 案例模拟与疑难解答 更多应用 农业是甲烷&#xff08;CH4&#xff…

前端面试题日常练-day37 【面试题】

题目 希望这些选择题能够帮助您进行前端面试的准备&#xff0c;答案在文末。 1. 在jQuery中&#xff0c;以下哪个方法用于隐藏一个元素&#xff1f; a) .hide() b) .remove() c) .toggle() d) .fadeIn() 2. 哪个jQuery方法用于在元素的前面插入新的HTML内容&#xff1f; a…

全球前五!ATFX 2024年Q1业绩狂飙,6240亿美元交易量彰显实力

5月&#xff0c;密集发布的报告显示&#xff0c;强者恒强是差价合约行业不变的竞争逻辑。而ATFX最新展现的业绩无疑是这一逻辑的有力例证。依照惯例&#xff0c;知名行业媒体Finance Magnates日前公布了全球经纪商最为关注的2024年第一季度行业报告。报告数据显示&#xff0c;A…

如何使用Java中的PreparedStatement来防止SQL注入

SQL注入的原理 SQL注入是一种常见的网络攻击方式&#xff0c;攻击者通过在应用程序的输入字段中插入恶意的SQL代码&#xff0c;利用程序对用户输入数据的合法性没有判断或过滤不严的漏洞&#xff0c;欺骗数据库执行非授权的任意查询&#xff0c;从而获取、修改、删除或添加数据…

数据结构算法-堆(Heap)和优先队列

堆的概念 堆&#xff08;heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质&#xff1a; always greater than its child node/s and the key of the root node is the largest among all other nodes. This property…

第53期|GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区&#xff0c;集成了生成预训练Transformer&#xff08;GPT&#xff09;、人工智能生成内容&#xff08;AIGC&#xff09;以及大语言模型&#xff08;LLM&#xff09;等安全领域应用的知识。在这里&#xff0c;您可以找…

Python 全栈体系【四阶】(五十三)

第五章 深度学习 十二、光学字符识别&#xff08;OCR&#xff09; 2. 文字检测技术 2.3 DB&#xff08;2020&#xff09; DB全称是Differentiable Binarization&#xff08;可微分二值化&#xff09;&#xff0c;是近年提出的利用图像分割方法进行文字检测的模型。前文所提…

Git原理及常用命令小结——实用版(ing......)、Git设置用户名邮箱

Git基本认识 Git把数据看作是对小型文件系统的一组快照&#xff0c;每次提交更新&#xff0c;或在Git中保存项目状态时&#xff0c;Git主要对当时的全部文件制作一个快照并保存这个快照的索引。同时&#xff0c;为了提高效率&#xff0c;如果文件没有被修改&#xff0c;Git不再…

明日周刊-第11期

上周末去参加了软考&#xff0c;这个考试目前很热门&#xff0c;参加考试的人也非常多。笔者已经算是二战了&#xff0c;今年从笔试改革成了机考。618的购物活动也都已经开始了&#xff0c;我给狗子买了一袋进口的高端狗粮渴望&#xff0c;但是买回来发现它并不爱吃&#xff0c…

二叉树——堆的实现

一.前言 前面我们讲解了二叉树的概念以及二叉树的存储结构&#xff1a;https://blog.csdn.net/yiqingaa/article/details/139224974?spm1001.2014.3001.5502 今天我们主要讲讲二叉树的存储结构&#xff0c;以及堆的实现。 二.正文 1.二叉树的顺序结构及实现 1.1二叉树的顺序…

面向对象编程:坦克飞机大战游戏的重构之旅

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、面向对象编程思想入门 坦克对象的定义 属性与行为方法的实现 二、面向过程与面向对象…

关于RAG(检索增强生成)的一些知识

写在前面 最近一直在看AI相关的文章&#xff0c;不出意外的话&#xff0c;后续几篇应该都是关于这方面的。希望能和大家一起了解这方面的技术。 什么是RAG 检索增强生成 (RAG,全称Retrieval-Augmented Generation) 是一种利用从外部来源获取的事实来提高生成式 AI 模型的准确…

利用机器非学习进行后门攻击

信息安全是一个古老的计算机领域。许多 80 后还记得自己小时候经常听到的瑞星杀毒和江民杀毒软件。这些 90 年代火遍大江南北的信息安全工具&#xff0c;至今仍然影响着使用互联网和信息技术的千家万户。随着人工智能的兴起和普及&#xff0c;有越来越多的商业软件使用了人工智…

Spring Bean工厂揭秘:提前暴露的艺术与源码深度解析

1. 引言 在Spring框架中&#xff0c;Bean的生命周期是一段复杂的旅程&#xff0c;涉及创建、初始化和销毁等关键步骤。而其中一个鲜为人知的技巧——提前暴露Bean工厂对象&#xff0c;则是这段旅程中一道亮丽的风景线。它不仅解决了循环依赖的难题&#xff0c;还优化了应用的性…

前端优化的时间库

将moment.js换成day.js day.js的体积比moment.js小。moment.js有70多kb&#xff0c;但是day.js只有2kb。像微信小程序这种对代码包大小有要求的情况下&#xff0c;day.js会是比moment.js更好的选择。很多官方的框架和库都已经将moment.js换成了day.js。 moment已经好几年没…

【强化学习】Q-learning,DQN,SARSA算法介绍

【强化学习】Q-learning&#xff0c;DQN&#xff0c;SARSA算法介绍 强化学习算法分类基于价值的方法基于策略的方法Actor-Critic方法 Q-learning算法DQN算法强化学习训练数据存在的问题经验回放机制备份网络机制 Sarsa算法总结 强化学习算法分类 按学习目标进行分类 可分为基于…

【数理统计03】集中不等式

集中不等式&#xff08;concentration inequalities&#xff09;是在概率论和统计学中用于描述随机变量&#xff08;尤其是随机变量的和或函数&#xff09;的集中程度的一类不等式。它们为随机变量偏离其期望值的概率提供了上界。这些不等式在很多领域都有应用&#xff0c;包括…

使用OpenSSL生成证书和私钥文件

使用OpenSSL生成证书和私钥文件&#xff0c;请按以下步骤操作&#xff1a; 第1步&#xff1a;生成RSA私钥 openssl genrsa -out private_key.pem 2048参数 -out 指定生成的私钥文件名&#xff0c;参数 2048 指定生成的RSA私钥以位为单位的长度&#xff0c;常见的取值&#xf…

Oracle表空间加密全过程极简实验

加密前 准备加密HR Schema中的表。 SQL> col table_name for a20 SQL> select table_name, tablespace_name from all_tables where ownerHR;TABLE_NAME TABLESPACE_NAME -------------------- ------------------------------ DEPARTMENTS …