MyBatis / Plus
文章平均质量分 93
卓越的ORM框架
流烟默
这个作者很懒,什么都没留下…
展开
-
MyBatis对参数的处理详解
OUTINOUT参数位置支持的属性:对于单个参数,mybatis不会做特殊处理,可以接受基本类型,对象类型,集合类型的值。这种情况MyBatis可直接使用这个参数,不需要经过任何处理。。对于多个参数,mybatis会做特殊处理。多个参数会被封装成 一个map。key:param1…paramN,或者参数的索引也可以value:传入的参数值#{}就是从map中获取指定的key的值;也可以对参数进行指定名称处理,使用指定的名称进行取值。原创 2017-01-10 09:28:30 · 861 阅读 · 0 评论 -
SpringBoot中MyBatisPlus的配置说明
如下是SpringBoot+mybatis+mybatisplus中常见的配置,这里面我们进行详细说明。原创 2019-01-17 18:39:27 · 385 阅读 · 0 评论 -
SpringBoot中事务执行原理分析(六)
接上文[SpringBoot中事务执行原理分析(五)](https://blog.csdn.net/J080624/article/details/78264800)后,本文我们分析一下事务处理过程中的事务同步管理器`TransactionSynchronizationManager`与事务同步`SqlSessionSynchronization`。# 【1】事务同步管理器这里指的是TransactionSynchronizationManager。管理每个线程的资源和事务同步的中央委托。通常用于原创 2017-09-10 18:13:36 · 2386 阅读 · 0 评论 -
SpringBoot中事务执行原理分析补充篇
本文是对[SpringBoot中事务执行原理分析(一)](https://janus.blog.csdn.net/article/details/54603669)的补充说明,我们详细分析一下如何判断Advisor与我们的service是否匹配。在前文中我们提到了**BeanFactoryTransactionAttributeSourceAdvisor**,其包含了Advice用于对我们的service进行增强实现事务效果。```csharppublic class BeanFactoryTra原创 2016-11-17 15:50:09 · 836 阅读 · 0 评论 -
SpringBoot中事务执行原理分析(五)
接上文[SpringBoot中事务执行原理分析(四)](https://blog.csdn.net/J080624/article/details/52786286)我们分析过方法正常执行完事务提交后,本文我们继续分析目标方法抛出异常后事务的回滚流程,即 `completeTransactionAfterThrowing(txInfo, ex)`。**TransactionAspectSupport的completeTransactionAfterThrowing方法如下。**```javaprot原创 2017-10-17 18:58:06 · 1215 阅读 · 0 评论 -
SpringBoot中事务执行原理分析(四)
接上文[SpringBoot中事务执行原理分析(三)](https://blog.csdn.net/J080624/article/details/52785544)我们分析过事务信息对象的获取后,本文我们继续分析目标方法执行后事务的提交流程,即 `commitTransactionAfterReturning(txInfo);`。如下所示TransactionAspectSupport的事务提交动作交给了事务管理器来处理。```java// org.springframework.transact原创 2016-10-11 11:10:13 · 1804 阅读 · 0 评论 -
SpringBoot中事务执行原理分析(三)
接上文[SpringBoot中事务执行原理分析(二)](https://janus.blog.csdn.net/article/details/53202138)后,本文我们分析事务执行流程中的`获取事务对象 - createTransactionIfNecessary` 。也就是分析TransactionAspectSupport的invokeWithinTransaction方法中下面这行代码。```java//TransactionAspectSupportTransactionInfo原创 2016-10-11 10:06:24 · 1016 阅读 · 0 评论 -
SpringBoot中事务执行原理分析(二)
接上文[SpringBoot中事务执行原理分析(一)](https://janus.blog.csdn.net/article/details/54603669)分析后,我们本文详细跟踪下TransactionInterceptor是如何控制事务行为的。前面我们提到了,我们的service被包装为代理。当触发目标方法时首先触发了`DynamicAdvisedInterceptor`的intercept方法,我们就从这里开始跟踪。![在这里插入图片描述](https://img-blog.csdnim原创 2016-11-17 16:32:00 · 1026 阅读 · 0 评论 -
SpringBoot中事务执行原理分析(一)
如下所示,如果没有应用事务(比如事务注解或者xml配置或者编程式事务),那么通常在PreparedStatement执行后,数据就进入了数据库,即使下一行业务代码抛出了异常也不会导致回滚。从本文开始我们开始分析事务执行原理,本文的环境是SpringBoot(+MybatisPlus),当然在SSM的环境下其本质也是一致的。PreparedStatementHandler的update方法。................................................原创 2017-01-18 18:38:26 · 1440 阅读 · 0 评论 -
MyBatis Plus入门实践详解
【1】什么是MyBatis Plus?MyBatis Plus简称MP,是mybatis的增强工具,旨在增强,不做改变。MyBatis Plus内置了内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求。官网地址:https://mp.baomidou.com/主要特性无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本 CURD(增加(Create)、读取(Read)原创 2020-07-22 14:02:01 · 2221 阅读 · 0 评论 -
Mybatis Plus公共字段自动填充(MyMetaObjectHandler)
Mybatis Plus公共字段自动填充,也就是在插入或者更新的时候如果发现某些字段为空,则为其赋予指定的默认值。【1】几个概念① FieldFill枚举类public enum FieldFill { DEFAULT(0, "默认不处理"), INSERT(1, "插入填充字段"), UPDATE(2, "更新填充字段"), INSERT_UPDATE(3, "插入和更新填充字段"); /** * 主键 */ private fi原创 2020-10-30 17:32:53 · 2098 阅读 · 1 评论 -
MyBatis Plus通用CRUD与条件构造器使用及SQL自动注入原理分析
首先根据MyBatis Plus入门实践详解 搭建好工程。然后创建数据库表与相关的类。表结构如下:EmployeeMapper接口继承自BaseMapper<Employee>public interface EmployeeMapper extends BaseMapper<Employee> {}这个BaseMapper是com.baomidou.mybatisplus.mapper.BaseMapper。【1】通用插入数据① insert测试代码如下:@T原创 2020-07-22 20:17:09 · 4739 阅读 · 1 评论 -
Mybatis Plus自定义全局SQL注入
根据MybatisPlus 的 AutoSqlInjector可以自定义各种你想要的 sql ,注入到全局中,相当于自定义 Mybatisplus 自动注入的方法。之前需要在xml中进行配置 的 SQL语句,现在通过扩展 AutoSqlInjector 在加载 mybatis环境时就注入。这种方式适合简单、全局式、批量式的业务。实际应用中如果MybatisPlus已经注入好的方法不能满足业务需要,更多还是使用xml方式实现自己的业务。【1】自定义注入实现步骤实现步骤如下:在 Mapper接口中定义原创 2020-10-30 15:43:42 · 3309 阅读 · 0 评论 -
MyBatis Plus插件机制与执行流程原理分析
【1】MyBatis Plus插件MyBatis Plus提供了分页插件PaginationInterceptor、执行分析插件SqlExplainInterceptor、性能分析插件PerformanceInterceptor以及乐观锁插件OptimisticLockerInterceptor。① xml下插件的配置如下所示:<bean id="sqlSessionFactoryBean" class="com.baomidou.mybatisplus.spring.MybatisSqlSe原创 2020-09-07 09:50:35 · 5323 阅读 · 5 评论 -
MyBatis Plus应用实践总结
【1】MyBatis Plus中的嵌套查询很多时候我们可能需要构造一个嵌套查询,如WHERE (name = ? AND ( (id = ? OR type = ?) ))。外层是and(or)连接,嵌套一个or(and)查询。MyBatis Plus同样对此提供了支持,在Nested<Param, Children>接口中我们可以看到具体使用方法。① Nested<Param, Children>接口源码public interface Nested<Param, Ch原创 2020-09-01 20:33:04 · 5148 阅读 · 1 评论 -
MyBatis Plus在AR道路上的探索之ActiveRecord
前面博文:MyBatis Plus入门实践详解MyBatis Plus通用CRUD与条件构造器使用及SQL自动注入原理分析Active Record(活动记录 ),是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的 一行记录。ActiveRecord 一直广受动态语言( PHP 、 Ruby 等)的喜爱,而 Java 作为准静态语言,对于 ActiveRecord 往往只能感叹其优雅,所以 MP也在 AR 道路上进行了一定的探索领域模型是一门很大的学原创 2020-07-28 15:30:55 · 586 阅读 · 0 评论 -
BLOB/ClOB存储图片、文档与视频
第一种方式:存:psmt.setBinaryStream(3,fis,(int)f.length()); 3:第三列,fis:从文件获取的输入流,f:文件对象;读:InputStream is = ResultSet.getBinaryStream(3); ……….拿到输入流之后,就可以进行任意操作。第二种方式:setBlob()/getBlob()原创 2016-10-12 17:55:48 · 4689 阅读 · 0 评论 -
原生JDBC使用C3p0数据源和dbcp数据源
【1】XML配置&amp;amp;amp;lt;c3p0-config&amp;amp;amp;gt; &amp;amp;amp;lt;named-config name=&amp;amp;quot;mvcapp&amp;amp;quot;&amp;amp;amp;gt; &amp;amp;amp;lt;property name=&amp;amp;q原创 2016-12-19 11:41:15 · 901 阅读 · 0 评论 -
JDBC中MetaData对象使用与详解
【1】ResultSetMetaDataResultSetMetaData 描述结果集的元数据,可以得到结果集中的基本信息 结果集中有那些列,列名,列的别名等等。@Test public void testResultSetMetaData() throws Exception { Connection connection = null; PreparedSt原创 2016-12-18 18:22:34 · 2821 阅读 · 0 评论 -
JDBC中PreparedStatement常用操作实践
JDBC使用Statement和PreparedStatement实现批处理功能。 PreparedStatement: 1) addBatch()将一组参数添加到PreparedStatement对象内部。 2) executeBatch()将一批参数提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组。 Statement: 1) addBatch(String sql)方法会在批处理缓存中加入一条sql语句。 2)原创 2017-06-12 17:24:28 · 4017 阅读 · 0 评论 -
JDBC基础入门与常用实例详解
JDBC基础入门与常用实例详解原创 2016-12-18 18:15:34 · 1504 阅读 · 0 评论 -
Spring中JdbcTemplate和JdbcDaoSupport简单使用
【1】JdbcTemplate JdbcTempl简介为了使 JDBC 更加易于使用, Spring 在 JDBC API 上定义了一个抽象层, 以此建立一个 JDBC 存取框架.作为 Spring JDBC 框架的核心, JDBC 模板的设计目的是为不同类型的 JDBC 操作提供模板方法. 每个模板方法都能控制整个过程, 并允许覆盖过程中的特定任务. 通过这种方式, 可以在尽可能保留灵活性的情况下, 将数据库存取的原创 2016-12-18 17:51:36 · 2630 阅读 · 0 评论 -
MyBatis的类型处理器TypeHandler与自定义实现
【1】 类型处理器(typeHandlers)MyBatis 在设置预处理语句(PreparedStatement)中的参数或从结果集中取出一个值时, 都会用类型处理器将获取到的值以合适的方式转换成 Java 类型。下表描述了一些默认的类型处理器。提示 从 3.4.5 开始,MyBatis 默认支持 JSR-310(日期和时间 API) 。类型处理器Java 类型JDBC 类型BooleanTypeHandlerjava.lang.Boolean, boolean数据库兼容的原创 2021-08-16 16:45:06 · 1597 阅读 · 0 评论 -
MyBatis中的插件分析与开发
流程原理分析系列:MyBatis原理分析之获取SqlSessionFactoryMyBatis原理分析之获取SqlSessionMyBatis原理分析之获取Mapper接口的代理对象MyBatis原理分析之查询单个对象MyBatis Plus插件机制与执行流程原理分析【1】MyBatis的插件机制MyBatis在四大对象的创建过程中,都会有插件进行介入。插件可以利用动态代理机制一层层的包装目标对象,而实现在目标对象执行目标方法之前进行拦截的效果。MyBatis 允许在已映射语句执行过程中的某原创 2021-08-14 16:15:01 · 261 阅读 · 0 评论 -
MyBatis原理分析之查询单个对象
**流程原理分析系列:**[MyBatis原理分析之获取SqlSessionFactory](https://janus.blog.csdn.net/article/details/119334417)[MyBatis原理分析之获取SqlSession](https://editor.csdn.net/md/?articleId=119485997)[MyBatis原理分析之获取Mapper接口的代理对象](https://blog.csdn.net/J080624/article/details/1原创 2016-11-17 17:40:47 · 3943 阅读 · 1 评论 -
MyBatis原理分析之获取Mapper接口的代理对象
前置博文:MyBatis原理分析之获取SqlSessionFactoryMyBatis原理分析之获取SqlSession本篇博文是原理分析的第三篇。当使用mapper接口进行CRUD时,其实是其代理对象在发挥作用,SQLsession获取mapper接口的MapperProxy的代理对象时序图如下:【1】DefaultSqlSession如下代码所示,这里其实是调用了configuration实例的方法。该方法是一个泛型方法,参数有Class<T> type表示你的接口Class对原创 2021-08-08 13:13:05 · 2871 阅读 · 0 评论 -
MyBatis原理分析之获取SqlSession
前置博客:MyBatis原理分析之获取SqlSessionFactory,本篇是续篇。获取sqlsession主要是通过SqlSessionFactory的几个重载方法,从configuration中的environment获取datasource与transactionFactory来得到Transaction。然后得到Transaction、Executor与DefaultSqlSession。mybatis全局配置文件中environments 结点配置如下<environments de原创 2021-08-07 16:27:42 · 5159 阅读 · 1 评论 -
MyBatis原理分析之获取SqlSessionFactory
MyBatis的执行原理分为如下四步:① 获取SqlSessionFactory② 获取SqlSession③ 获取mapper的代理对象④ sqlsession进行具体CRUD过程这里又分为三种场景:① 无spring环境自己手动根据mybatis配置文件获取SqlSessionFactory和SqlSession② 传统ssm环境通常在applicationContext.xml中注册了SqlSessionFactory和SqlSession③ SpringBoot原创 2021-08-02 22:09:18 · 3585 阅读 · 0 评论 -
mybatis-spring整合详情介绍
官网文档:mybatis-spring【1】快速上手要和 Spring 一起使用 MyBatis,需要在 Spring 应用上下文中定义至少两样东西:一个 SqlSessionFactory 和至少一个数据映射器类。在 MyBatis-Spring 中,可使用 SqlSessionFactoryBean来创建 SqlSessionFactory。 要配置这个工厂 bean,只需要把下面代码放在 Spring 的 XML 配置文件中:<bean id="sqlSessionFactory" cl转载 2021-07-26 16:19:02 · 436 阅读 · 0 评论 -
你尝试过在mybatis某个mapper上同时配置<cache/>和<cache-ref/>吗?
项目背景:mybatis3.4.1,mapper接口上没有任何注释,有两个对应的XXXMapper.xml和YYYMapper.xml文件,在xml文件中分别配置<cache/>和<cache-ref/>。首先看下官方文档:<cache/>对某一命名空间的语句,只会使用该命名空间的缓存进行缓存或刷新。 但你可能会想要在多个命名空间中共享相同的缓存配置和实例。要实现这种需求,你可以使用 <cache-ref/> 元素来引用另一个缓存。那如果在同一个xxxMa原创 2021-07-21 22:46:26 · 2059 阅读 · 7 评论 -
MyBatis中映射器之结果映射详解
关联博文:MyBatis中XML映射器使用详解【1】结果映射resultMap 元素是 MyBatis 中最重要最强大的元素。它可以让你从 90% 的 JDBC ResultSets 数据提取代码中解放出来,并在一些情形下允许你进行一些 JDBC 不支持的操作。实际上,在为一些比如连接的复杂语句编写映射代码的时候,一份 resultMap 能够代替实现同等功能的数千行代码。ResultMap 的设计思想是,对简单的语句做到零配置,对于复杂一点的语句,只需要描述语句之间的关系就行了。之前你已经见过简单映转载 2021-07-14 16:27:33 · 2990 阅读 · 0 评论 -
几种常见的ORM框架
【1】Mybatis官网地址:https://github.com/mybatis/mybatis-3① 概要MyBatis 是支持定制化SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的JDBC 代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。mybatis原是Apache的一个开源项目iBatis, 201原创 2021-07-04 10:22:00 · 11485 阅读 · 0 评论 -
SpringBoot整合MyBatis-generator逆向工程
【1】POM文件<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.0.1</version> ...原创 2019-04-26 17:57:35 · 2222 阅读 · 1 评论 -
MyBatis使用实践总结
【1】插入后将主键ID放回到对象中MySQL数据库,SpringBoot+MyBatis。mapper.xml配置如下:<insert id="insert" useGeneratedKeys="true" keyProperty="id" parameterType="com.jane.knowledge.entity.SysMoment"> insert into tb...原创 2019-11-09 15:01:05 · 2511 阅读 · 1 评论 -
Mybatis - 集成Spring实例详解
结构示意图:1.Modelimport java.io.Serializable;import java.util.Date;/*implements Serializable*/public class User implements Serializable{ private int id; private String name; private Date birt原创 2016-12-05 10:30:40 · 1269 阅读 · 0 评论 -
Mybatis中基于注解的增删改查实践
【1】注解接口-UserMapperpublic interface UserMapper { @Insert("insert into t_user(username,age) values(#{name},#{age})") public int addUser(User user); @Delete("delete from t_user where id=#{id}")原创 2016-11-28 10:05:52 · 1675 阅读 · 0 评论 -
mybatis全局配置文件实例与详解
转载 2017-04-06 20:38:33 · 939 阅读 · 1 评论 -
MyBatis中XML映射器使用详解
有时候会不可避免使用动态表或者列进行业务处理。下面学习几种动态表/列的使用方式:【1】使用预编译即,默认值。<select id="hisNumber" parameterType="hashmap" resultType="hashmap" > select number from ${oldTableName} <!--这里使用"$"!!!-->where name=#{name转载 2017-04-16 18:11:26 · 1654 阅读 · 0 评论 -
Mybatis使用SelectKey自定义主键
SelectKey在Mybatis中是为了解决Insert数据时不支持主键自动生成的问题,他可以很随意的设置生成主键的方式。属性 -描述:① keyProperty : selectKey 语句结果应该被设置的目标属性。② resultType:结果的类型。MyBatis 通常可以算出来,但是写上也没有问题。MyBatis 允许任何简单类型用作主键的类型,包括字符串。③ order: 这可以被原创 2017-02-14 10:03:41 · 6472 阅读 · 0 评论 -
Mybatis中对象映射关联之collection使用
one to one - association ;one to many - collection ; Nested results - column is not necessary ,javaType is necessary !nested queries - column is necessary ,javaType is not necessary !表结构:t_studen原创 2016-12-02 11:28:25 · 6182 阅读 · 0 评论