02.TK.Mybatis之Select

Tk.mybatis零sql语句实现动态sql查询 有时候,查询数据需要根据条件使用动态查询,这时候需要使用动态sql.,通常我们会自己写动态sql来实现,比如: <select id="findStudentByCondition" resultType="com.example.service.entity.Student"> SELECT id, name, score FROM tbl_student ... 阅读详情

TK.Mybatis查询方法

一、概述

本章节基于第一章节的:01.Mybatis Tk插件环境搭建
TK的内置查询方法有很多,在该章节主要介绍几种常用的的方法:

  • selectAll():查询所有
  • selectByPrimaryKey(Object var1):主键查询
  • selectByExample(Example example):用来复杂查询
二、单元测试
  • 主键查询
    它会根据主键进行查询,进行传的是一个对象,它只会拼接主键。
	@Test
    public void selectAll(){
        Product param = new Product();
        param.setId(1L);
        param.setProductName("Redis深度历险记");
        //Product product = productDao.selectByPrimaryKey(1L);  等价下面语句
        Product product = productDao.selectByPrimaryKey(param);
    }
 //==>  Preparing: SELECT id,product_name,price,in_time,out_time FROM product WHERE id = ?
//==> Parameters: 1(Long)
//<==    Columns: id, product_name, price, in_time, out_time
//<==        Row: 1, Redis深度历险记, 79, 2019-12-21 18:22:20, 2019-12-23 18:22:20
//<==      Total: 1
  • 复杂查询-1:范围查询
    比如:我要查询入库时间在:2019-12-19—2019-12-25的商品
@Test
    public void selectBetWeen(){
        Example example = new Example(Product.class);
        
        LocalDateTime from = LocalDateTime.of(2019,12,19,0,0);
        LocalDateTime to = LocalDateTime.of(2019, 12, 26,0,0);

        example.createCriteria().andBetween("inTime", from, to);
        List<Product> products = productDao.selectByExample(example);
    }
    
//==>  Preparing: SELECT id,product_name,price,in_time,out_time FROM //product WHERE ( in_time between ? and ? ) 
//==> Parameters: 2019-12-19 00:00:00.0(Timestamp), 2019-12-26 //00:00:00.0(Timestamp)
//<==    Columns: id, product_name, price, in_time, out_time
//<==        Row: 1, Redis深度历险记, 79, 2019-12-21 18:22:20, 2019-12-23 //18:22:20
//<==        Row: 2, Java 8 函数编程, 56, 2019-12-24 18:22:20, 2019-12-26 //18:22:20
//<==      Total: 2
  • 复杂查询-2:多条件查询 比如:(a or b) and ( c )
    在这里,我要查询入库时间大于等2019-12-25,且出库时间大于等与2019-12-25的商品。
	@Test
    public void selectByCra(){
        Example example = new Example(Product.class);

        //LocalDateTime cur = LocalDateTime.of(2019,12,25,0,0);
        
        Example.Criteria c = example.createCriteria();
        c.andLessThanOrEqualTo("inTime", "2019-12-25 00:00:00.0");

        Example.Criteria e = example.createCriteria();
        e.andGreaterThanOrEqualTo("outTime", "2019-12-25 00:00:00.0");

        example.and(e);
        List<Product> products = productDao.selectByExample(example);
    }
    
//==>  Preparing: SELECT id,product_name,price,in_time,out_time FROM //product WHERE ( in_time <= ? ) and ( out_time >= ? ) 
//==> Parameters: 2019-12-25T00:00(String), 2019-12-25T00:00(String)
//<==    Columns: id, product_name, price, in_time, out_time
//<==        Row: 2, Java 8 函数编程, 56, 2019-12-24 18:22:20, 2019-12-26 //18:22:20
//<==      Total: 1

观察上面两个复杂查询日志结果,你会发现一个Criteria 对于一个 ()

三、最后

虽然TK帮助我们省略部分工作,但是随着查询条件的复杂度增加,编写代码也非常多,感觉不太容易维护。建议:对于复杂条件的sql还是XML方便点,后期维护起来也比较容易。

四、参考
如何整合tk.mybatis 到springboot 项目中 一、根源 tk.mybatis 是一款mybatis的插件,可以自动生成xml,mapper等,之前也用过一些其他插件,比如mybatis-generater ,但是会有个个问题,xml文件中会包含所有那些公共的方法。这样看上去很不友好,想在自己公司的老项目中整合进tk.mybatis 二、整合步骤 1、新增代码 ①添加maven依赖 <dependency> ... 阅读详情

相关推荐

MyBatis 逆向工程(MBG)生成的 Example 与 tk.mybatis 框架使用的 Example的区别

本质代码生成 + 静态 SQL通用接口 + 动态 SQLServiceMapper自定义或 MBG 生成继承Mapper<T>XML自动生成完整 SQL无(运行时生成)推荐度⭐⭐☆⭐⭐⭐⭐最终建议:对于新项目,直接使用,它代表了 MyBatis 生态的未来发展方向。

向GEEK和码农致敬。 721

通俗易懂的MyBatisPlus教程(含配套资料)

本教程为授权出品教程MyBatisPlus是一款非常强大的MyBatis增强工具包,只做增强不做改变.在不用编写任何SQL语句的情况下即可以极其方便的实现单一、批量、分页等操作。本套教程基于MyBatisPlus新2.3版本,详细讲授:集成MyBatisPlus、通用CRUD、EntityWrapper条件构造器、ActiveRecord 等基本操作,更有代码生成器、插件扩展、自定义全局操作、公共字段填充、Oracle主键Sequence处理、Idea快速开发插件等高阶技术. 通过具体的需求详细讲解如何在MybatisPlus原有的基础上进行自定义扩展.对于重点内容会进行源码讲授, 会涉及到MyBatis框架相关的原理, 若对MyBatis源码不熟悉,建议先学习尚硅谷官网中 MyBatis 的课程。

【自动驾驶控制算法】 第一讲 绪论

声明【自动驾驶控制算法】系列是博主对所分享教学内容的学习笔记,并且该系列每篇博客都会将博主听课后总结的纸质版笔记附于文末,供大家参考。是一位研究汽车领域,无人驾驶方向及其相关方向的大佬,也算是博主在无人驾驶方向的启蒙老师。所以研究相关领域的朋友推荐去听一听他的视频讲解。...

iamtbon_1的博客 1797

tkMybatis + @Select 注解 个人 笔记 #工具

public interface UserMapper extends Mapper<User>{ @Select("select * from tb_user where user_name = #{userName} ") public List<User> selectUserByUserName(@Param("userName") St...

jupiter_windy的博客 2528

【数据结构】汉诺塔问题(丰富图解)

经典汉诺塔问题,丰富图解,助你理解。

℉f的博客 4105

别再手动配网了!用安信可PB-02模组+PHY Mesh App,5分钟搞定蓝牙Mesh智能灯群控

本文详细介绍了如何使用安信可PB-02模组和PHY Mesh App快速搭建蓝牙Mesh智能灯群控系统。通过5分钟的硬件连接和固件烧录,用户可实现多灯分组控制、场景切换及地理围栏等高级功能,显著提升智能家居部署效率。方案特别适合需要快速实现灯光群控的场景。

weixin_28675839的博客 419

MyBatis技术(二)

一、接口映射 通过接口方式来映射到指定SQL之后,那么就可以通过操作接口的方法来访问数据库了,这种方式更加符合Java面向接口编程的要求。 1.1 定义映射接口 在映射文件中所在包下定义一个接口类,该接口负责提供操作数据库的方法。 public interface ProductMapper { public Product select(int id); } 虽然接口名可以是任意名字...

zhongliwen1981的专栏 1399

ERA5 hourly data批量下载与cdo处理(一)

本篇文章主要介绍了ERA数据的批量下载

qq_40511689的博客 3872

tk.mybatis

@MapKey("id")

weixin_43113795的博客 251

DOA估计算法从原理到仿真——CBF、Capon、MUSIC算法

从原理出发理解并实现经典的DOA估计算法

m0_55845774的博客 1万+

Python实战:3种高效方法将txt转csv(附pandas对比测试)

本文针对Python中将txt文件转换为csv格式的需求,深度评测了open()、csv模块和pandas三种主流方法。通过详尽的性能对比测试,从执行效率、内存占用和适用场景等维度提供选型指南,帮助开发者根据数据规模与复杂度选择最高效的转换方案。

weixin_29073241的博客 263

MyBatis第三讲

一级缓存、二级缓存

m0_56528635的博客 512

Win10本地账户密码遗忘?巧用指纹/PIN快速重置(家庭版/专业版通用指南)

本文提供了一份详细的Win10本地账户密码遗忘自救指南,适用于家庭版和专业版用户。核心方法是利用已登录的指纹或PIN码权限,通过创建新的管理员账户或使用系统工具,安全重置遗忘的本地账户密码,无需第三方工具或重装系统,有效保护个人数据。

e6f7g8h9i的博客 580

Spring Boot整合tk-mybatis、PageHelper

本文介绍了tk-mybatis这一曾经流行的MyBatis增强框架的使用方法,尽管它已被MyBatis-Plus取代,但仍值得了解。文章详细展示了如何从零开始整合tk-mybatis:从数据库准备(创建歌曲表并插入测试数据)、创建Spring Boot项目、添加依赖(包括tk-mybatis和分页插件PageHelper),到配置数据源和MyBatis。重点讲解了实体类创建、Mapper接口定义(继承tk.mybatis.mapper.common.Mapper)以及核心API的使用,包括增删改查操作和基于

沐雨橙风ιε的博客 3561

2025资源从哪里来!

研究网络通信中的安全问题,如VLAN划分、路由协议(静态、动态如OSPF、BGP)、NAT转换、AAA认证、访问控制列表(ACL)等。‌Wi-Fi安全设置‌、‌密码破解原理‌(仅用于合法测试或教育目的)、‌常见Web安全问题‌如SQL注入、XSS跨站脚本攻击等的防范措施。在这个网站你可以找到你对应的专业-对应的路线-对应的资源-对应的百度网盘里面全是免费的资源------------------惊喜不?‌防火墙配置与策略‌、‌入侵检测与防御系统(IDS/IPS)‌、‌端口扫描与漏洞扫描技术‌等。

qq_56248592的博客 1904

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

tk.mybatis源码

BaseMapper.java import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.MySqlMapper; public interface BaseMapper&amp;lt;T&amp;gt; extends Mapper&amp;lt;T&amp;gt;, MySqlMapper&amp;lt;T&amp;gt; { //TODO ...

第245万个博主 3234

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

tk-mybatis和mybatisplus使用和区别

概念: 使用Mybatis时,最大的问题是,要写大量的重复SQL语句在xml文件中,除了特殊的业务逻辑SQL语句之外,还有 大量结构类似的增删改查SQL。而且,当数据库表结构改动时,对应的所有SQL以及实体类都需要更改。 这大量增 加了程序员的负担。避免重复书写CRUD映射的框架有两个 通用mybatis(tk mybatis) mybatis plus,通能更加强大 一.tk-mybatis的使用 1.tk-mybatis需要引入启动器,直接引入即可。 pom.xml中引入如下内容

weixin_44722237的博客 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

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

一样,都会作为表字段,表字段默认为Java对象的Field名字驼峰转下划线形式。进行指定,对不符合第一条默认规则的可以通过这种方式指定表名。表名默认使用类名,驼峰转下划线(只对大写字母进行处理),如。注解可以忽略字段,添加该注解的字段不会作为表字段使用。指定不符合第3条规则的字段名。注解作为主键的字段,可以有多个。注解的字段作为联合主键。

不积跬步,无以至千里;不积小流,无以成江海 1096

tk.mybatis的Mapper接口的方法使用

tk.mybatis的Mapper提供了一些增删改查的方法,懒化了我们写代码的习惯,但是,,很香,,, 实体entity //简化后 public class UserPo implements Serializable { @Id @Column(name = "NAME") private String name; @Column(name = "AGE") private Integer age; @Column(name = "SEX")

qq_41706745的博客 1931

tk.mybatis如何直接写sql执行

复用 tk.mybatis 条件构造器,实现特殊操作(如字段运算、安全更新)。

leijmdas的专栏 1274

SpringBoot框架—SpringBoot集成TK_MyBatis

SpringBoot框架—SpringBoot集成TK_MyBatis 1.搭建Tk_MyBatis环境 在pom.xml导入坐标 <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper-spring-boot-starter</artifactId&gt...

DURR 296

tk.mybatis.mapper 的详细使用

初识 tk.mybatis.mapper 通用mapper 在博客园发表Mybatis Dynamic Query后,一位园友问我知不知道通用mapper,仔细去找了一下,还真的有啊,比较好的就是abel533写的tk.mybatis.mapper。 本次例子地址:https://github.com/wz2cool/tk-mybatis-demo 传统Mybatis用法 Spring ...

HiBoyljw的博客 1万+

tk.mybatis 中的通用Mapper自定义SQL语句

前言 今天就是想写点什么,其实还有很多没写的东西呢!笔记里边好多东西都挺好的,经验加实践总结出来的。就是都没有系统的整理,至于原因吧,有很多,最重要的一点就是我有点懒。今天写个最简单的东西,现在的开发变的越来越简单了,因为有好多大牛写了好多好用的“轮子”!比如说tk.mybatis。 用这个插件简单的项目根本就不用写SQL语句。下来看看怎么通过tk.mybatis自定义SQL语句。 正文 tk.mybatis自定义的SQL语句有两种写法,今天主要介绍一种。 先说一下用tk.mybatis定义好的方法怎样去查

朗福德的博客 7478

使用tk.mybatis查询,某些字段返回0的问题

title: 使用tk.mybatis查询,某些字段返回0的问题 date: 2019-07-10 16:21:27 categories: MyBatis 今天使用mapper4出现了个问题,记录一下。 查询代码: example = new Example(VesselTrackData.class); if (dateType != 0){ ...

weixin_38950807的博客 1212

tk.mybatis的动态生成sql语句原理

tk.mybatis的动态生成sql语句原理

奕辰杰的博客 659

初识 tk.mybatis.mapper 通用mapper

在博客园发表Mybatis Dynamic Query后,一位园友问我知不知道通用mapper,仔细去找了一下,还真的有啊,比较好的就是abel533写的tk.mybatis.mapper。 本次例子地址:https://github.com/wz2cool/tk-mybatis-demo 传统Mybatis用法 Spring boot 引用基本的jar到pom <depende...

dgpn43769的博客 599
上一篇: 01.初识TK.Mybatis插件
下一篇: 03.活动重叠判断
buffeer
博客等级 码龄9年 23粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值