Mybatis & ORM
文章平均质量分 86
Mybatis & ORM
zzhongcy
因为站在了巨人的肩上,所以我看得更远。
当你发现自己的才华撑不起野心时,就请安静下来学习吧
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【容易坑】mybatis中使用if标签比较两个字符串是否相等
继续往下面想,这个if语句的执行顺序,应该是在执行SQL查询之前,那可以推断的是,Mybatis在执行SQL时,首先是先将所有的标签转化组装为SQL,然后在执行SQL语句。activityType就是在这个if判断语句中,被赋值为2的,即使在Mybatis的初始绑定值为3,那这么说的话,activityType不为null时,它的值会一直为2。这是一个简单的条件判断,并决定排序字段的语句,但是中间却使用了等号作为判断条件,显然这儿是不成立的,大抵已经找到原因了。注意:使用如下方式是错的。原创 2025-05-21 17:50:42 · 2065 阅读 · 0 评论 -
MyBatis if choose 动态 SQL
动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似的框架,你应该能理解根据不同条件拼接 SQL 语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL,可以彻底摆脱这种痛苦。使用动态 SQL 并非一件易事,但借助可用于任何 SQL 映射语句中的强大的动态 SQL 语言,MyBatis 显著地提升了这一特性的易用性。原创 2025-03-27 17:00:48 · 1213 阅读 · 0 评论 -
mybatis报错:Error querying database. Cause: java.lang.NumberFormatException: For input string: xx
'Y',此时,mybatis认为拿一个字符串(String)和一个字符(char)比较,也会报错。参数格式化异常导致,例如在动态sql拼接中String类型参数和数字比较。2. 改为双引号"2",外层使用单引号。3. 加转义实体字符串引号。转载 2024-06-14 16:53:38 · 959 阅读 · 0 评论 -
mybatis 跨库查询 mysql
跨库,表关联的查询,实现起来很简单:selecta.uidfrom只要在表的前边加上库名即可。原创 2024-05-11 11:00:05 · 1606 阅读 · 0 评论 -
Mybatis 批量插入数据 SQL
上面代码中在 SQL 语句的最外层使用了 for 循环,好处是将 List 类型的集合传递来写入数据时可以有的是新增有的是修改,例如3行数据,第一三行由于主键字段对应属性 sid 被设置为 NULL ,会向数据库中新增行,第二行数据设置了 sid ,并且该值在数据库中有对应行,那么会修改数据库中的该行上的数据。通过在 java 中测试,发现上面的语句新增一行成功后会返回1,修改成功后会返回2(这里有疑惑,如果清楚原因的麻烦跟帖科普下)。这种写法适合插入数据的项不变,原创 2024-02-02 11:11:45 · 4587 阅读 · 0 评论 -
mybatis&Mysql分页查询,以及SQL_CALC_FOUND_ROWS与count(*) 性能对比
温故而知新,这里记录一下。原创 2024-01-11 17:48:18 · 1859 阅读 · 0 评论 -
springboot+mybatis, SqlSessionTemplate线程安全
springboot+mybatis, SqlSessionTemplate线程安全原创 2022-06-01 09:17:29 · 4224 阅读 · 3 评论 -
Mybatis运行常见错误汇总
1. 找不到类中的 get 属性 1 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'userName' in 'class com.q18idc.Xxxx' 检查取值表达式中的属性名是否写错了,例如:{转载 2022-03-29 15:15:56 · 3771 阅读 · 0 评论 -
Mybatis动态SQL与分页
Mybatis动态SQL与分页Mybatis动态SQL1. if<select id="selectUserByUsernameAndSex" resultType="user" parameterType="com.ys.po.User"> select * from user where <if test="username != null"> username=#{username} </if> <if t.转载 2020-12-09 17:46:24 · 667 阅读 · 0 评论 -
ORM中的N+1问题
ORM能够让事情变得简单,也会让有些事情变得复杂。有人说,这不就是一个SQL语句的事嘛,干嘛在ORM里面就这么复杂。一、什么是N+1问题我们来解释什么是N+1的问题,在所有的ORM中,这都会是一个问题,新手很容易踩到坑。进而导致系统变慢,然后拖垮整个系统。还是拿代码来说事,上篇我们定义了一个User的模型,这次还继续沿用,然后增加一个Post(文章)的模型。User和Post是一对多的...原创 2020-04-03 16:57:47 · 1684 阅读 · 0 评论 -
ORM优缺点详解,已经JOOQ、MyBatis介绍
最近详细了解了一下ORM,这里记录一下。当下我们使用的ORM("对象-关系 映射"(Object Relational Mapping))框架中,JPA/Hibernate/Mybatis占了半边天,它们都有各自的优势和使用场景。最近发现了一个之前从来没用的ORM框架jOOQ,非常有意思,为数据处理提供了一种全新的方式一、ORM1.1、ORM概述面向对象编程和关系型数据...原创 2020-04-03 15:32:29 · 7707 阅读 · 1 评论 -
mybatis foreach Collection的List、Array、Map
mybatis的foreach官方文档解释:对一个集合进行遍历,通常是在构建IN条件语句的时候使用。例如<select id="selectPostIn" resultType="domain.blog.Post"> SELECT * FROM POST P WHERE ID in <foreach item="item" index="index" coll...转载 2019-10-21 10:50:44 · 7101 阅读 · 0 评论 -
【SpringBoot-4】mybatis详解,mybatis一级二级缓存机制,以及Ehcache & Redis对比
最近项目需要研究mybatis,网上查了一下资料,这里记录一下一、一二级缓存mybaits提供一级缓存,和二级缓存。二、二级缓存分布式实现 mybatis中默认自带的二级缓存实现(PerpetualCache)是无法做到分布式的。 Java提供了一个开源的分布式缓存EhCache。它是一个纯Java的开源分布式缓存(进程内缓存),具有快速、精干等特...原创 2019-08-12 16:55:04 · 2043 阅读 · 1 评论 -
【SpringBoot-5】Spring缓存注解@Cacheable、@CacheEvict、@CachePut使用
从3.1开始,Spring引入了对Cache的支持。其使用方法和原理都类似于Spring对事务管理的支持。Spring Cache是作用在方法上的,其核心思想是这样的:当我们在调用一个缓存方法时会把该方法参数和返回结果作为一个键值对存放在缓存中,等到下次利用同样的参数来调用该方法时将不再执行该方法,而是直接从缓存中获取结果进行返回。所以在使用Spring Cache的时候我们要保...原创 2019-08-22 11:11:12 · 4017 阅读 · 2 评论 -
Mybatis分页插件PageHelper的配置和使用
最近项目用到sprint boot +Mybatis,有个分页需求,网上查了查PageHelper的使用,这里记录一下。1. MySQL对分页的支持简单来说MySQL对分页的支持是通过limit子句。请看下面的例子。limit关键字的用法是 LIMIT [offset,] rows offset是相对于首行的偏移量(首行是0),rows是返回条数。# 每页10条记录,取第一...原创 2019-08-14 17:12:28 · 2436 阅读 · 0 评论
分享