随笔分类 -  MyBatis

1
摘要:一、Mybatis返回Map结构 // 使用Mybatis返回Map结构时,字段别名需要用双引号包裹否则别名会全部小写,没有驼峰 <select id="selectById" resultType = "map"> select id as "myId",name as "myName" from 阅读全文
posted @ 2022-03-21 21:49 古兰精 阅读(24796) 评论(1) 推荐(1) 编辑
摘要:在我们查数据时,mybatis会默认把关联的数据查出来,而关联查询比单表查询慢,并且我们有时候不需要那么多的数据。所以我们需要开启懒加载,关联的数据等需要的时候再查出来。 myBatis开启懒加载,需要在mybatis主配置文件的settings标签中配置lazyLoadingEnabled为tru 阅读全文
posted @ 2021-06-21 19:01 古兰精 阅读(1271) 评论(2) 推荐(0) 编辑
摘要:大部分时候,我们都是在 Spring 里面去集成MyBatis。因为 Spring 对 MyBatis 的一些操作进行的封装,我们不能直接看到它的本质,所以先看下不使用容器的时候,也就是编程的方式,MyBatis 怎么使用。先引入mybatis jar 包。 首先我们要创建一个全局配置文件,这里面是 阅读全文
posted @ 2021-06-15 22:08 古兰精 阅读(1530) 评论(0) 推荐(1) 编辑
摘要:一、问题记录 在 mybatis 中使用 collection 映射一对多关系的结果集时,会存在2个问题: 1、问题一:total总数与实际返回数量不一致 2、问题二:实际返回数据有问题 二、Mybatis一对多的两种mapper写法 Mybatis提供了两种一对多的解决方案:一种是嵌套结果,一种是 阅读全文
posted @ 2021-06-14 15:38 古兰精 阅读(2040) 评论(1) 推荐(0) 编辑
摘要:除了懒加载,还有什么方法能提高查询效率呢?那就是缓存。 mybatis 为我们提供了一级缓存和二级缓存,可以通过下图来理解 1、一级缓存是SqlSession级别的缓存 —— 它是各自独立的 在操作数据库时需要构造sqlSession对象,在对象中有一个数据结构(HashMap)用于存储缓存数据。 阅读全文
posted @ 2021-06-06 16:07 古兰精 阅读(804) 评论(0) 推荐(0) 编辑
摘要:一、需求背景 需求:比如查询订单信息,需要查询出是谁下单的,就是需要关联查询出用户信息。 第一种方法:我们直接关联查询出所有订单和用户的信息 第二种方法:分步查询,首先查询出所有的订单信息,然后如果需要用户的信息,我们在根据查询的订单信息去关联用户信息 对应分析: 如果使用第一种方法:这里我们一次查 阅读全文
posted @ 2021-06-06 13:58 古兰精 阅读(2238) 评论(0) 推荐(0) 编辑
摘要:MyBatis官方文档:https://mybatis.org/mybatis-3/zh/index.html 一、什么是mybatis MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。 MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工 阅读全文
posted @ 2021-06-06 11:18 古兰精 阅读(169) 评论(0) 推荐(0) 编辑
摘要:一、MyBatis如何得到插入数据之后的主键值 1、第一种:数据库设置主键自增机制。 userMapper.xml 文件中定义: <!-- 向 user 表插入一条数据 --> <insert id="insertUser" parameterType="com.ys.po.User"> <!-- 阅读全文
posted @ 2021-06-06 10:51 古兰精 阅读(504) 评论(0) 推荐(0) 编辑
摘要:动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似的框架,你应该能理解根据不同条件拼接 SQL 语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL,可以彻底摆脱这种痛苦。 使用动态 SQL 并非一件易事,但借助 阅读全文
posted @ 2021-06-04 22:33 古兰精 阅读(4210) 评论(0) 推荐(0) 编辑
摘要:这个问题比较简单,其实出现这个问题实质就是mapper接口和mapper.xml文件没有映射起来。 有些细节可以逐一排查,常见的错误如下: 1、检查xml文件所在package名称是否和Mapper interface所在的包名 <mapper namespace="com.enmox.emcs.m 阅读全文
posted @ 2021-06-03 21:41 古兰精 阅读(1760) 评论(0) 推荐(0) 编辑
摘要:一、Parameter 'xxx' not found 今天看后台代码时在本地运行,发现一个问题报错: Caused by: org.apache.ibatis.binding.BindingException: Parameter 'tag' not found 然后就看代码:dao层里面的参数那 阅读全文
posted @ 2021-06-03 21:21 古兰精 阅读(3657) 评论(0) 推荐(0) 编辑
摘要:一、resultType resultType 可以把查询结果封装到 pojo 类型中,但必须 pojo 类的属性名和查询到的数据库表的字段名一致。也就是说一般数据库字段名喜欢用下划线类型:user_id、而实体类通常是用驼峰 userId。如果这样子那么就对不上了,怎么办呢? 如果 sql 查询到 阅读全文
posted @ 2021-05-13 21:31 古兰精 阅读(2384) 评论(0) 推荐(1) 编辑
摘要:一、MyBatis 中#{}和${}区别 #{} 是预编译处理,像传进来的数据会加个" "(#将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号) ${} 就是字符串替换。直接替换掉占位符。$方式一般用于传入数据库对象,例如传入表名. 使用 ${} 的话会导致 sql 注入。什么是 SQL 阅读全文
posted @ 2020-09-14 22:08 古兰精 阅读(745) 评论(0) 推荐(0) 编辑
摘要:一、问题背景 在使用 MyBtais resultMap 一对多时,查数据报错: Unable to serialize claims object to json: Unable to serialize object: No serializer found for class org.apac 阅读全文
posted @ 2020-06-15 23:51 古兰精 阅读(1878) 评论(0) 推荐(0) 编辑
摘要:用注解来简化xml配置的时候,@Param注解的作用是给参数命名,参数命名后就能根据名字得到参数值,正确的将参数传入sql语句中 我们先来看Mapper接口中的@Select方法 package Mapper; @Mapper public interface Mapper { @Select("s 阅读全文
posted @ 2018-06-29 00:09 古兰精 阅读(45753) 评论(2) 推荐(8) 编辑
摘要:@Mapper public interface DemandCommentMapper extends BaseMapper<DemandComment>{ @Select("SELECT " + "a.id as 'id',a.create_date as 'createDate',a.cont 阅读全文
posted @ 2018-06-28 23:57 古兰精 阅读(71213) 评论(5) 推荐(5) 编辑
摘要:MyBatis是支持定制化SQL、存储过程以及高级映射的优秀的持久层框架,避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。 spring Boot是能支持快速创建Spring应用的Java框架。 本文通过一个例子来学习Spring Boot如何集成MyBatis,而且过程中不需要XML配置 阅读全文
posted @ 2018-06-02 18:17 古兰精 阅读(11584) 评论(1) 推荐(0) 编辑
摘要:本文重点介绍spring boot mybatis 注解化的实例代码 1、pom.xml //引入mybatis <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-start 阅读全文
posted @ 2018-06-02 17:09 古兰精 阅读(6704) 评论(0) 推荐(0) 编辑
摘要:一、Mapped Statements collection already contains value for XXX 的可能原因 今天在MyBatis遇到报错:Mapped Statements collection already contains value for auditExam,原 阅读全文
posted @ 2017-08-12 22:40 古兰精 阅读(670) 评论(0) 推荐(0) 编辑
摘要:一、问题背景 1、项目场景: 看下面这几个数值型的字段筛选,默认不筛选时前端就会传空字符串,包括type,然后后端就都加了判断不为空字符串的判断,但是结果是 type 为 0 时会失效。 也就是说:如果是数值类型的字段,限制 != '' 的话,type=0 的时候会失效。 2、结论:数值型不用限制 阅读全文
posted @ 2017-08-10 23:34 古兰精 阅读(1133) 评论(0) 推荐(0) 编辑

1
点击右上角即可分享
微信分享提示