lombok中的@Data注解与MyBatis的懒加载机制冲突解决
使用@Data注解与mybatis的懒加载机制实现一对一关系查询时,发现怎么配置都无效,就是一下都查出来了,根本没有懒加载
1.application.yml配置文件配置如下:
# mybatis 配置内容
mybatis-plus:#config-location: classpath:mybatis-config.xml # 配置 MyBatis 配置文件路径mapper-locations: classpath:mapper/*.xml # 配置 Mapper XML 地址type-aliases-package: com.steven.springboot.datasource.model # 配置数据库实体包路径configuration:map-underscore-to-camel-case: truelog-impl: org.apache.ibatis.logging.stdout.StdOutImpllazy-loading-enabled: trueaggressive-lazy-loading: falselazyLoadTriggerMethods:
2.实体类user.java
package com.steven.springboot.datasource.model;import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
@TableName("users")
public class UserDO {/*** 用户编号*/private Integer id;/*** 账号*/private String username;/*** 密码*/private String password;private int did;private DeptDO deptDO;
}
3.实体类DeptDO.java
package com.steven.springboot.datasource.model;import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;import java.util.List;/*** @author Steven* @version 1.0* @date 2022/2/25 10:53* @description*/
@Data
@TableName("dept")
public class DeptDO {private Integer id;private String name;private List<UserDO> userDOList;
}
4.映射文件UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.steven.springboot.datasource.mapper.UserMapper"><resultMap id="getUserAndDeptStep" type="UserDO"><id property="id" column="id"/><result property="username" column="username"/><result property="password" column="password"/><result property="did" column="did"/><association property="deptDO" select="com.steven.springboot.datasource.mapper.DeptMapper.getDeptByStep" column="did"/></resultMap><select id="selectUserAndDeptStep" resultMap="getUserAndDeptStep">select * from users where username like concat(#{username},"%") and password=#{password}</select>
</mapper>
5.映射文件DeptMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.steven.springboot.datasource.mapper.DeptMapper"><select id="getDeptByStep" resultType="DeptDO">select * from dept where id=#{id}</select>
</mapper>
6.测试类UserTests.java
package com.steven.springboot.datasource;
import com.steven.springboot.datasource.mapper.UserMapper;
import com.steven.springboot.datasource.model.UserDO;
import
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringbootDataSourceApplication.class)
public class UserTests {@ResourceUserMapper userMapper;@Testpublic void getUserAndDeptByStep() {UserDO userDO=new UserDO();userDO.setUsername("张希");userDO.setPassword("123456");List<UserDO> userDOList = userMapper.selectUserAndDeptStep(userDO);System.out.println(userDOList);}
}
所以解决方案就是两种
- 使用@Data同时再重写一遍toString()方法
- 不用toString的话,就把@Data拆开
lombok中的@Data注解与MyBatis的懒加载机制冲突解决相关推荐
- mybatis 的懒加载原理
断断续续的阅读 mybatis 的源码有好几个月了,想把自己了解到的一些东西与大家分享.今天给大家分享一下 mybatis 的懒加载原理. mybatis 的懒加载过程挺复杂的,涉及到的东西有很多,包 ...
- free mybatis 不生效_关于 Mybatis 设置懒加载无效的问题
看了 mybatis 的教程,讲到关于mybatis 的懒加载的设置: 只需要在 mybatis 的配置文件中设置两个属性就可以了: 但是经过测试之后发现是无效的,经过一番折腾,发现是因为我在测试的时 ...
- Mybatis懒加载机制
懒加载会按需要是否执行关联查询语句.如果用到了关联查询语句的信息,就需要执行关联查询,否则就只执行主查询 1.在mybatis的全局配置文件中加入两个属性: <settings><s ...
- Mybatis学习第四天:Mybatis延迟加载懒加载,一级缓存,二级缓存,注解开发
文章目录 Mybatis中的延迟加载 一对一进行延迟加载 一对多的延迟加载 缓存机制: 一级缓存 二级缓存 注解开发 注解开发--单表的增删改查 注解开发--建立表与实体类的对应关系 注解开发--多表 ...
- MyBatis的懒加载(延迟加载)
什么是懒加载 所谓懒加载就是按需加载. 例如: 对象模型就是一个订单中持有一个对用户的引用. 当查询订单信息时,暂时不加载用户信息.就延迟加载(懒加载). 什么情况下才能使用懒加载呢? 上面的情况是无 ...
- vue2.0中实现div容器里的内容懒加载
当全部数据加载完毕时: 有以上组件情况,点击查询更多按钮可实现懒加载功能. 主要看userList组件和父组件就可以了. <template><div id="root&q ...
- mybatis的懒加载和缓存
1.懒加载:需要多表查询的时候一般使用分步的单表查询,因为会比关联查询效率高,而分步单表查询的时候有时候不需要某些表的关联信息时,为了优化就可以配置懒加载,(通常将懒加载设置为false,也就是不懒加 ...
- lombok 中的@Data注解
今天看到有代码中的Dao包中的类文件,写的极其简洁,甚至引起了开发工具InteliJ的报错,然后程序还能稳健地跑起来. 1 2 3 4 5 6 7 8 9 import lombok.Data; @D ...
- 浏览器是先执行js还是先加载HTML,在HTML中使用JavaScript(浏览器对js的加载机制分析)...
前言: 向HTML页面中插入JavaScrip的主要方法,就是使用 要点: 1.script标签用外链的src引入文件时,内嵌的js代码无效. 2.只要不存在defer和async属性,浏览器都会按照 ...
最新文章
- 10 个开源 Python OpenCV 小项目,YouTube热门
- [转载]数据库设计三大范式应用实例剖析
- np.logic_and/or/not用法
- Windows下安装python的pip
- 2.1.2 操作系统之进程的状态(运行、就绪、阻塞、创建、终止)及转换(就绪-运行、运行-就绪、运行-阻塞、阻塞-就绪)
- VTK:几何对象之TriangleStrip
- 使用Maven创建Web项目后,jsp引入静态文件提示报错。JSP 报错:javax.servlet.ServletException cannot be resolved to a type...
- 数据结构链表之栈——解决括号匹配问题和逆波兰表达式求值问题——6
- Oscache 概述
- c中获取python控制台输出_linux c程序中获取shell脚本输出的实现方法
- 求离散数据的突变点_数据的离散程度分析1
- Android 系统(210)----Android的.so文件你需要知道那些知识
- three.js和php,详解three.js本地运行的方法
- Struts2学习笔记(十八) 防止表单重复提交
- CenOS6 nginx+pxe+tftpd+samba/nfs+dhcpd 无盘安装windows linux
- DOD,与cisco三层模型
- 2022爱分析· 汽车行业数字化厂商全景报告
- 第三方rom 6.0刷机后,网络连接叹号处理方法
- 第一代电子计算机英语,第一代电子计算机的意思
- 浅学 ------ 爬虫(一)
热门文章
- URAL 1047 Simple Calculations
- 解答: 刷DFT 版 Windows Phone 依然无法越狱安装程序的原因
- 使用C#进行Word 2002和Excel 2002编程
- 请问如何把.net framework框架集成在安装程序里头?
- vue 时间插件_Vue3 插件开发详解尝鲜版「值得收藏」
- linux安装php pgsql,Linux下apache php+phppgadmin+postgresql安装配置
- list 是什么意思 php,php中list的功能是什么
- 域控 批量导入 用户_kerberos域用户提权分析
- 怎么获取layer中的表单值_layer获取弹出frame层数据
- 原字体_在包装上玩转字体