MyBatis
文章平均质量分 66
xyx-Eshang
潜心静学,保持谦逊
展开
-
MyBatis | 06. 纠正:对子查询的理解
文章目录1.以往的理解2.不妥之处2.1.多此一举2.2.数据返回错误3.正确的做法1.以往的理解在还未有接触到懒加载时查询出的所有的属性都是用association和collection去一一映射后来在接触到懒加载,没有深刻理解只改了resultMap中association和collection,增加了select属性和column属性,而没有对原来的SQL语句进行改动。但这样的做法是错误的2.不妥之处2.1.多此一举在开启延迟加载后,就没有必要在SQL语句中联表了延迟加载开原创 2021-05-20 01:49:00 · 120 阅读 · 0 评论 -
MyBatis | 05.多个collection同时开启延迟加载(使用select属性)时,数据无法正确封装
文章目录1.问题描述1.1.问题背景:1.2.查询结果2.寻找突破口2.1.修改其中一个collection2.2.修改两个collection2.3.注释掉两个collection3.情况分析3.1.注释掉两个collection3.2.修改其中一个collection3.3.修改两个collection4.解决方案1.问题描述在多对多查询的时候如果一个resultMap中有多个collection同时开启懒加载使用了select属性那么数据就不会被正确返回1.1.问题背景:1) 表中数据如下原创 2021-05-14 23:05:45 · 1061 阅读 · 0 评论 -
MyBatis | 04.作为外码的字段,在Entity中既要有相应的对象属性,该字段本身对应的属性也应有
1. 举例在数据库中有teacher表,表中有外码user_id,与user表一对一关联那么在生成teacher表对应的Entity时不仅要有User user属性,也应有Integer userId属性2. 之前的做法之前在碰到类似业务场景时,我只生成一个User user属性,而没有生成Integer userId属性。这样做的弊端有下:(1)如果需要封装一个teacher对象作为参数去执行方法,而又需要对userId赋值://老师Teacher teacher = new Tea原创 2021-04-17 18:50:45 · 170 阅读 · 0 评论 -
MyBatis | 03.用Boolean作为查询的返回值
文章目录1. 业务场景2. 原因分析3. 解决方案1. 业务场景我需要实现一个点赞的接口在 新增点赞记录 之前,需要先查询该用户是否已点赞如果已点赞,则拒绝 新增点赞记录因此我需要实现:有数据时返回true,无数据时返回false则查询方法如下MyBatis会将0和大于0的数字自动解析,如果是0,则返回false;大于0,则返回true但是在查询到没有数据时,MyBatis的返回值并不是0,而是null2. 原因分析MyBatis在没有查询到数据的时候,返回值是null而不是0因原创 2021-04-16 20:12:55 · 4075 阅读 · 1 评论 -
MyBatis | 02. SpringBoot项目开启驼峰映射和自动生成主键
1. SpringBoot开启驼峰映射如图,在application.yml中加入配置即可mybatis: configuration: map-underscore-to-camel-case: true2. 自动生成主键插入数据时,过去的操作是手动查询最后一位,然后手动对其赋值现在可以在mapper.xml中,进行配置:(1) 插入语句变成如下,不需要再写主键了INSERT INTO table (b , c , d)VALUES (B , C , D)(2) 配置原创 2021-04-11 15:59:44 · 400 阅读 · 0 评论 -
MyBatis | 01.无法查询出数据
1.发现问题现在已经用Spring Boot整合了项目,并且开启了延迟加载。在进行查询时,发现有几个对象属性没有被查询出来2. 推敲尝试经过反复推敲,发现sender(User类)和剩余两个属性的区别,就在于:(1) sender(User类)对应的userMapper.xml的方法返回值采用了resultMap(2) 剩余两个属性对应的mapper.xml的方法返回值都只用了resultType于是尝试着在剩下两个属性所在的mapper.xml中编写了resultMap,成功返回3. 原因原创 2021-04-04 01:00:03 · 893 阅读 · 0 评论