数据库持久层框架
Hibernate,Mybatis
极光雨雨
“芝士”与你分享 ———纳西妲
展开
-
Mybatis (plus 也适用)原生直接执行某句SQL
想要不论传入什么sql 都能直接执行。原创 2024-06-18 15:44:14 · 544 阅读 · 0 评论 -
Mybatis-plus 更新或新增时设置某些字段值为空
指定 updateStrategy = FieldStrategy.IGNORED 后会忽略该字段的空值判断,从而达到更新null的效果。通过这种方式会指定更新时该字段的策略,通常情况下updateById这种会根据字段更新,通常都会判断null 以及空值。通过updateWrapper 更新,需要手动set 字段等于 null 或 空串,以此来达到目的。通过自定义 sql,或使用原始 xml 来完成,或通过注解 都是手动写更新的语句。(一旦启用,所有通过实体更新的动作都会变化)原创 2024-05-31 17:11:03 · 817 阅读 · 0 评论 -
Mybatis plus 三种分页方式,可以兼容pagehelper
mybatis-plus 的三种分页方式原创 2024-05-11 10:09:01 · 529 阅读 · 0 评论 -
Mybatis-plus 内部提供的 ServiceImpl<M extends BaseMapper<T>, T> 学习总结
当集成Mybatis-Plus 后,我们的大部分数据库操作都可以通过 XxxxxMapper ,同时 Mybatis-plus 在Mapper 提供基本操作方法的同时,也提供类基础的 serviceImpl 来帮助我们完成一些常见的基本操作。创建完成entity 后就要创建基本的Mapper 并集成 Mybatis-plus 提供的基础Mapper 完成基础适配。内部向我们提供了 如下公共方法,可以直接使用,甚至还为我们添加了事务回滚。当继承后,我们将可以直接使用改类内部提供的方法,见下方源码。原创 2023-11-10 10:13:05 · 1359 阅读 · 0 评论 -
Mybaits-plus .and() 使用方法
为了在代码中构造出sql 的 where…) 的类似结构,可以通过如下方式完成。如上代码类似于如下 sql 语句。原创 2023-09-13 17:18:16 · 726 阅读 · 0 评论 -
MyBatis-plus 加 limit 在句末添加语句 last()方法
可以通过 QueryWrapper 的 last() 方法在整体语句的最后添加手动写入的sql。: 在整体语句的最后添加手动写入的sql。原创 2023-07-22 17:02:14 · 1374 阅读 · 0 评论 -
spring-boot JPA 集成使用总结以及基本使用介绍 入门案例等 And、Or、Between、Like、In、NotIn等接口命名字 EntityManager 自定义、 @Query用法等
相关资料@Entity 相关学习介绍 springJPAJPA @entity@table@index 定义表以及序列案例@Id 自增设定通过 jpa 上面的配置spring : jpa : hibernate : # 自动更新表结构 自动建表可以实现当通过注解完成实体定义时,启动项目时将建立对应的表结构实体定义实例。原创 2023-02-25 16:31:03 · 1959 阅读 · 0 评论 -
Mybatis plus 分页集成及基本使用总结 注解连表查询分页案例 QueryWrapper,LambdaQueryWrapper,selectMap和selectObjs
Mybaits-plus 是mybits 的升级版,从mybaits 升级到mybaits-plus 可以实现平滑升级Mybaits-plus 本身提供了大量的基本查询方法以及强大的 Wrapper(包装) 类 用于查询的以及 更新的,使用Wrapper 基本已经可以构建大部分条件了。几乎可以实现很少代码,很多功能自动提供使得一般的查询几乎不需要写 XML 直接使用代码包装完成。同时支持各类注解帮助完成实体以及查询语句的构建。(在上面定义的实体类扫描路径包下创建)原创 2023-02-24 16:58:36 · 4131 阅读 · 0 评论 -
Hibernate addScalar() addEntity() setResultTransformer() 返回的数据集合转为指定类或Map 等 使用以及学习总结
通过该种方式可以直接将 某一张表的全部列转为对应的 持久化实体,说白了就是你的库里面的所有字段对应的 Entity, 而且这个类上自然已经标注了每一个实体属性对应的列名称,从而 hibernate 自己可以识别出来。可以极大的简化这一过程,即可以将 Hibernate 结果的很多字段直接转为 对应的实体,或指指定的实体,或者Map 等等简化这一过程。如上所说,如果指定了 addScalar 中的列,那么返回的结果中只会包含添加到 addScalar 中的列,即使查询的比这个多也不会返回。......原创 2022-08-18 15:36:03 · 1314 阅读 · 0 评论 -
Hibernate executeUpdate 执行成功但没有生效,Hibernate 事务提交顺序与程序不一致
如果确认你的语句没有问题原因经过一番代码确认后 发现实际上我的语句和我之前的语句在程序执行过后都没有立即执行 而我的语句依赖于我之前的代码先执行完这里就猜到了数据没有被提交到数据库,在事务实际提交到数据库中执行后 我的语句在我依赖的语句之前执行 导致没有实际效果,也就是Hibernate 是批量将事务提交到数据库后,由于提交顺序和程序中的顺序不一致导致结果不成功在使用 Hibernate 时由于事务是批量提交到数据库去执行的,这样相当于是一种优化,减少了交流次数。解决方式INSERT, UPD原创 2022-05-07 18:33:00 · 1904 阅读 · 0 评论 -
Hibernate 一般参数查询设置样例(一般字符,时间,集合)以及集合类型DAO 关键点示例及 简单单表查询 createCriteria(xxxx.class).add(xxxx)
思路设定 一般查询sql 的 StringBuilder, 以及where 条件的 StringBuilder;(order by 等 类似)当一般参数存在或者不为空时将条件 append 加入 一般查询sql 的 StringBuilder一般查询sql 的 StringBuilder 与 where 条件的 StringBuilder 拼接到一起得到总的 sql 字符串(顺序符合 sql本身的定义)通过 createQuery( sql ); 创建 Query 对象通过判断一般查原创 2022-03-15 17:27:46 · 1777 阅读 · 0 评论 -
JPA @Id 自增设定案例
案例 @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "id") private Long id;@Id 声明@GeneratedValue 自动生成的方式指定更多解释见@Entity 相关学习介绍 springJPA原创 2022-01-25 10:54:26 · 2352 阅读 · 0 评论 -
JPA @entity@table@index 定义表以及序列案例
示例@Entity 指定实体表名@Entity(name = "his")@Table(indexes = {@Index(columnList = "code, version", name = "index_resource_code_version")})public class HisEntity {@Table 表定义@Index 序列定义更多JPA 说明见@Entity 相关学习介绍 springJPA...原创 2022-01-25 10:48:08 · 1620 阅读 · 0 评论 -
@Column 定义TEXT,以及BLOB 类型
定义TEXT@Column(name = "abstract", columnDefinition = "TEXT")private String abstract;get,set 方法采用正常 String即可定义BLOBnullable 根据需要加入@Lob@Column(name = "template_data", columnDefinition = "LONGBLOB", nullable = true)private byte[] templateData;get,set原创 2022-01-25 10:42:13 · 1387 阅读 · 3 评论 -
@Entity 相关学习介绍 springJPA
@Entity :表明是一个实体类@Table :对应的数据表名@Id :主键@GeneratedValue:主键生成策略@Column : 映射表对应的字段名@Basic : 表示该属性是表字段的映射。 如果实体的字段上没有任何注解默认就是@Basic@Transient : 表示该属性不是表字段的映射@Lob : 将属性映射成支持的大对象类型 ,如Clob、Blob@IdClass 联合主键,一般不用也不推荐用@Temporal : 用来设置D..原创 2021-12-15 18:21:52 · 2284 阅读 · 0 评论 -
Hibernate @Column 字段生成失败
现象启动项目时,在自动创建表与对应字段的时绝大部分创建成功,但是个别字段没有自动添加成功。原因以及解决方式之一在自动生成表对应字段的时候,如果一张表的内所有字段的长度超出表本身的限制,那么添加新字段的时候将会添加失败。但是 text 系列的字段长度并不计入数据库表总长度的限制当中,但也不能因此使用大量 text 系列的字段类型,最好合理安排所有字段的长度设计,有需要时可以对表进行拆分。生成字段时可以指定 Column 长度。避免默认长度导致资源浪费。但部分环境下这个限制会相对提高,对于表本身长度原创 2021-12-15 18:17:34 · 1072 阅读 · 0 评论 -
WEB开发 Mybatis的FOREACH,批量中的循环操作 +实体对象BEAN中时间注解写法
批量更新<update id="checkedAll"> UPDATE b_person SET per_state = '02' where id in( <foreach separator="," collection="list" item="item" index="index"> #{item.id} </foreach> ) </update>同样的批量循环删除这里使用逻辑删除<updat原创 2021-04-10 18:46:26 · 191 阅读 · 0 评论 -
WEB开发 Mybatis时间段查询条件 时间过滤总结
直接上例子and submit_date >= to_timestamp('${starYear} 00:00:00','yyyy-mm-dd HH24:mi:ss')and submit_date <= to_timestamp('${endYear} 23:59:59','yyyy-mm-dd HH24:mi:ss')其中 > 和 <; 其实就是 > 和 < 号,这里它自己转义了;只需要传递字符串类型的日期列如yyyy原创 2021-04-03 20:13:41 · 795 阅读 · 0 评论 -
WEB开发 Mybatis模糊查询的两种拼接方式
一部分数据库不支持 || 方式的拼接<if test="publishDepart != null and publishDepart != ''"> AND publish_depart like '%' || #{publishDepart,javaType=String,jdbcType=CHAR} || '%' </if>二使用CONCAT方法<if test="name != null and name != ''">AND name like原创 2021-04-03 19:29:25 · 90 阅读 · 0 评论 -
框架专题 Hibernate使用总结 + 案例
ORM(对象关系映射)原来操作数据库是以sql语句的方式,现在严格按照面向对象的方式通过操作javabean来操作数据库开发的步骤1、下载hibernate的jar包(hibernate的官网 hibernate.org)2、引入mysql的jar包3、编写数据库的表(后期也可以不编写)4、写javaBean(要和创建的表,一一对应)5、配置映射文件(xxx.hbm.xml)(要和javabean在最好同一个包下,而且 名字 要和javabean一样)6、配置核心文件hibern原创 2020-09-05 10:16:46 · 149 阅读 · 0 评论 -
框架专题 Mybatis延迟加载策略 + 缓存机制 +逆向工程
延迟加载策略比如在查询人的时候不要订单,不要查询订单信息,直到我需要订单数据的时候再去查询需要mybatis设置懒加载和按需加载文档描述需要在 mybatis 整体的配置中加上 lazyLoadingEnabled 设置为 true按需加载aggressiveLazyLoading设置为true <settings> <!---开启懒加载--> <setting name="lazyLoadingEnabled" value="t原创 2020-09-05 10:01:15 · 116 阅读 · 0 评论 -
框架专题 Mybatis进阶及使用总结 + 案例
多表联查 resultMap复杂关系一对一模型:一个人有一个身份证create table person( pid int primary key auto_increment, pname varchar(20), address varchar(20));create table card( cid int primary key auto_increment, cnum varchar(20), fk_pid int);insert person( pname原创 2020-09-05 09:47:24 · 150 阅读 · 0 评论 -
框架专题 Mybatis基于Java的持久层框架,介绍及使用总结
Mybatis介绍MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)作用Mybatis 可以帮你整合service的数原创 2020-09-05 09:29:45 · 2325 阅读 · 0 评论