草庐IT

八、动态SQL

一、动态SQLMyBatis框架动态SQL技术是根据特定的条件拼接SQL语句的功能,存在的意义是为了解决拼接SQL语句字符串痛点问题1.if标签If标签可通过test属性(传递过来的数据)的表达式进行判断。如果为true标签执行。在where后面添加1=1横成立条件  如果不加这个条件,此刻empName为空的时候,SQL拼接出错select*fromt_empwhereandage=?andsex=?andemail=?因为where和and连用 ①DynamicSQLMapper接口/***多条件查询*/ListgetEmp(Empemp);②DynamicSQLMapper映射文件sel

【项目实战】MyBatis-Plus 配置属性介绍以及如何开启与关闭SQL日志打印

一、常见的配置属性以下是一些常见的配置属性:序号配置属性属性说明默认值1cacheEnabled指定是否启用缓存默认为true2lazyLoadingEnabled指定是否启用延迟加载默认为false3aggressiveLazyLoading指定是否启用积极延迟加载默认为false4defaultStatementTimeout指定默认的SQL语句超时时间(以秒为单位)默认为null5defaultFetchSize指定默认的结果集大小,用于控制内存消耗默认为true6cacheEnabled指定是否启用缓存默认为null7mapUnderscoreToCamelCase指定是否启用自动将下

mybatis plus怎么实现动态表名

MybatisPlus可以通过使用TableNameParser接口来实现动态表名。你需要自定义一个实现了TableNameParser接口的类,并在MybatisPlus的配置中将其注册为自定义的TableNameParser实例。然后,你就可以在你的mapper接口中使用@TableName注解来动态指定表名了。例如:@MapperpublicinterfaceUserMapper{@Select("SELECT*FROM${tableName}WHEREid=#{id}")UserfindById(@Param("tableName")StringtableName,@Param("id

JPA 之 QueryDSL-JPA 使用指南

Querydsl-JPA框架(推荐)官网:传送门参考:JPA整合Querydsl入门篇SpringBoot环境下QueryDSL-JPA的入门及进阶概述及依赖、插件、生成查询实体1.Querydsl支持代码自动完成,因为是纯JavaAPI编写查询,因此主流JavaIDE对起的代码自动完成功能支持几乎可以发挥到极致(因为是纯Java代码,所以支持很好)2.Querydsl几乎可以避免所有的SQL语法错误(当然用错了QuerydslAPI除外,因为不写SQL了,因此想用错也难)3.Querydsl采用Domain类型的对象和属性来构建查询,因此查询绝对是类型安全的,不会因为条件类型而出现问题4.Q

JPA 之 QueryDSL-JPA 使用指南

Querydsl-JPA框架(推荐)官网:传送门参考:JPA整合Querydsl入门篇SpringBoot环境下QueryDSL-JPA的入门及进阶概述及依赖、插件、生成查询实体1.Querydsl支持代码自动完成,因为是纯JavaAPI编写查询,因此主流JavaIDE对起的代码自动完成功能支持几乎可以发挥到极致(因为是纯Java代码,所以支持很好)2.Querydsl几乎可以避免所有的SQL语法错误(当然用错了QuerydslAPI除外,因为不写SQL了,因此想用错也难)3.Querydsl采用Domain类型的对象和属性来构建查询,因此查询绝对是类型安全的,不会因为条件类型而出现问题4.Q

Mybatis-Plus的SQL注入器实现批量插入/修改,效率比较

Sql效率mysql支持一条sql语句插入多条数据。但是Mybatis-Plus中默认提供的saveBatch、updateBatchById方法并不能算是真正的批量语句,而是遍历实体集合执行INSERT_ONE、UPDATE_BY_ID语句。mybatis-plus虽然做了分批请求、一次提交的处理。但如果jdbc不启用配置rewriteBatchedStatements,那么批量提交的sql到了mysql就还是一条一条执行,mysql并不会将这些sql重写为insert多值插入,相比一条sql批量插入,性能上会差点。rewriteBatchedStatements文档https://dev.

MyBatis 核心组件 —— Configuration

概述Mybatis的核心组件如下所示:Configuration:用于描述MyBatis的主配置信息,其他组件需要获取配置信息时,直接通过Configuration对象获取。除此之外,MyBatis在应用启动时,将Mapper配置信息、类型别名、TypeHandler等注册到Configuration组件中,其他组件需要这些信息时,也可以从Configuration对象中获取MappedStatement:用于描述Mapper中的SQL配置信息,是对MapperXML配置文件中等标签或者@Select/@Update等注解配置信息的封装SqlSession:是MyBatis提供的面向用户的AP

Mybatis多表关联查询(一对多关联查询)

1、Mybatis一级缓存与二级缓存目的:提高查询效率,降低数据库查询压力,提升系统整体性能。一级缓存:默认开启,Session级别,同一个会话内生效。命中缓存的情况:statementid、SQL语句、结果集的范围、传递的参数相同。同一个查询之前执行DML操作,清空缓存,session.clearCache()也会清空缓存。二级缓存:需要配置,SQLSessionFactory级别,不同会话之间可以共享。使用步骤:1、全局配置mybatis_config.xml文件中2、mapper.xml配置要使用二级缓存的查询3、使用查询返回的对象的类必须实现序列化接口。MemCached、OSCach

Mybatis多表关联查询(一对多关联查询)

1、Mybatis一级缓存与二级缓存目的:提高查询效率,降低数据库查询压力,提升系统整体性能。一级缓存:默认开启,Session级别,同一个会话内生效。命中缓存的情况:statementid、SQL语句、结果集的范围、传递的参数相同。同一个查询之前执行DML操作,清空缓存,session.clearCache()也会清空缓存。二级缓存:需要配置,SQLSessionFactory级别,不同会话之间可以共享。使用步骤:1、全局配置mybatis_config.xml文件中2、mapper.xml配置要使用二级缓存的查询3、使用查询返回的对象的类必须实现序列化接口。MemCached、OSCach

MyBatis实现 Java 对象和数据库中日期类型之间的转换(超详细)

背景数据库存储的时间字段的类型是datetimeJava实体类的时间字段类型是Date需求:响应前端的时间字段格式为”yyyy-MM-ddHH:mm:ss“步骤1、定义resultMap定义Java对象和数据库表字段的对应关系,在mapper.xml文件中使用#{属性名,jdbcType=数据库字段类型}来进行参数传递和结果集映射,例如:resultMapid="userResultMap"type="User">idcolumn="id"property="id"jdbcType="INTEGER"/>resultcolumn="name"property="name"jdbcType="V