mybatis
文章平均质量分 89
mybatis学习
、楽.
放弃很容易,但坚持一定很酷!
展开
-
Mybatis Plus 如何处理大表查询?
在实际工作中当指定查询数据过大时,我们一般使用分页查询的方式一页一页的将数据放到内存处理。但有些情况不需要分页的方式查询数据或分很大一页查询数据时,如果一下子将数据全部加载出来到内存中,很可能会发生OOM(内存溢出);而且查询会很慢,因为框架耗费大量的时间和内存去把数据库查询的结果封装成我们想要的对象(实体类)。原创 2023-06-24 22:17:15 · 955 阅读 · 0 评论 -
深度剖析Mybatis-plus Injector SQL注入器
深度剖析Mybatis-plus Injector SQL注入器原创 2023-05-18 00:07:42 · 2807 阅读 · 2 评论 -
spring boot+mybatise-plus实现多数据源简单案例
多数据源简单案例原创 2022-06-06 14:54:52 · 364 阅读 · 1 评论 -
MyBatis源码本地编译
为什么需要在本地编译源码我们在看框架源码的时候,如果没有注释,看起来会比较吃力。所以如果能够一边看源码一边自己加中文注释,下次阅读的时候就会轻松很多。问题是:通过maven下载的jar,查看源码,实际上看到的是经过反编译的class文件,是不能够修改的(提示:file is read only)。如果把当前maven下载的jar包强行关联到自己下载的源码,又有可能会出现字节码跟源码文件不一致的情况(提示:Library source does not match the bytecode for cl原创 2021-11-02 13:41:15 · 555 阅读 · 0 评论 -
Mybatis源码分析——基础模块与核心原理
基础支持层基础支持层位于MyBatis整体架构的最底层,支撑着MyBatis的核心处理层,是整个框架的基石。基础支持层中封装了多个较为通用的、独立的模块。不仅仅为MyBatis提供基础支撑,也可以在合适的场景中直接复用。反射模块MyBatis在进行参数处理、结果集映射等操作时会使用到大量的反射操作,Java中的反射功能虽然强大,但是代码编写起来比较复杂且容易出错,为了简化反射操作的相关代码,MyBatis提供了专门的反射模块,该模块位于org.apache.ibatis.reflection包下,它原创 2021-11-04 12:27:10 · 237 阅读 · 0 评论 -
ORM 框架的发展历史及简单使用
JDBC操作JDBC操作的特点最初的时候我们肯定是直接通过JDBC来直接操作数据库的,本地数据库有一张t_user表,那么我们的操作流程是: /** * 通过JDBC查询用户信息 */ public void queryUser() { Connection conn = null; Statement stmt = null; User user = new User(); try {原创 2021-11-01 14:34:53 · 779 阅读 · 0 评论 -
Mybatis源码分析—— 相关体系结构与核心工作原理
一、三层划分介绍首先我们要从宏观上了解Mybatis的整体框架分为三层,分别是基础支持层、核心处理层、和接口层。如下图:然后根据前面讲解的MyBatis的应用案例,给出MyBatis的主要工作流程图:1. 接口层首先接口层是我们打交道最多的。核心对象是SqlSession,它是上层应用和MyBatis打交道的桥梁,SqlSession上定义了非常多的对数据库的操作方法。接口层在接收到调用请求的时候,会调用核心处理层的相应模块来完成具体的数据库操作。2. 核心处理层接下来是核心处理层。既然叫核原创 2021-11-03 13:34:41 · 232 阅读 · 0 评论 -
Mybatis——Mybatis整合Spring详解
mybatis-spring官网1. MyBatis整合Spring实现我们首先实现MyBatis和Spring的整合操作。1.1 添加相关的依赖这些是整合的依赖,不包括其他分页插件等依赖。<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>2.0.4</ve.原创 2021-11-18 16:29:09 · 1517 阅读 · 0 评论 -
MyBatis源码分析——事务管理
MyBatis作为Java语言的数据库框架,对数据库的事务管理是其非常重要的一个方面。1. DataSource在数据持久层中,数据源是一个非常重要的组件,其性能直接关系到整个数据持久层的性能,在实际开发中我们常用的数据源有 Apache Common DBCP,C3P0,Druid 等,MyBatis不仅可以集成第三方数据源,还提供的有自己实现的数据源。在MyBatis中提供了两个 javax.sql.DataSource 接口的实现,分别是PooledDataSource 和UnpooledDat原创 2021-11-18 11:42:09 · 182 阅读 · 0 评论 -
Mybatis源码分析——插件详解
插件是一种常见的扩展方式,大多数开源框架也都支持用户通过添加自定义插件的方式来扩展或者改变原有的功能,MyBatis中也提供的有插件,虽然叫插件,但是实际上是通过拦截器(Interceptor)实现的,在MyBatis的插件模块中涉及到责任链模式和JDK动态代理,这两种设计模式的技术知识也是大家要提前掌握的。1. 自定义插件首先我们通过实现一个自定义插件来对该部分有个清楚的认识。1.1 创建Interceptor实现类我们创建的拦截器必须要实现Interceptor接口,Interceptor接口的原创 2021-11-17 11:23:55 · 497 阅读 · 0 评论 -
装X神器——定制属于你自己的Mybatis框架~
手写Mybatis 1.0需求分析通过原始的JDBC代码来操作数据库非常的麻烦,里面存在着太多的重复代码和低下的开发效率,针对这种情况我们需要提供一个更加高效的持久层框架。资源管理它需要实现对连接资源的自动管理,也就是把创建Connection、创建Statement、关闭Connection、关闭Statement这些操作封装到底层的对象中,不需要在应用层手动调用。SQL语句在代码中我们直接将SQL语句和业务代码写在了一起,耦合性太高了,我们需要把SQL语句抽离出来实现集中管理,开发人员不用在原创 2021-11-04 17:24:18 · 285 阅读 · 1 评论 -
基于Spring JDBC 手写定制自己的ORM框架
实现思路概述ResultSet说到ResultSet,对于有java开发经验的小伙伴自然是熟悉不过了。从ResultSet的取值大家都会,比如:private static List<Member> select(String sql) { List<Member> result = new ArrayList<>(); Connection con = null; //连接对象 PreparedState原创 2021-10-31 21:49:57 · 411 阅读 · 0 评论 -
Mybatis 从入门到起飞 ~ 芜湖 ~
简介官网地址:https://mybatis.org/mybatis-3/zh/index.htmlMyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。“半自动”的ORM框架能够很好的解决上面所讲的Hiber原创 2021-11-02 10:46:32 · 294 阅读 · 0 评论 -
使用Mybatis-plus实现自动填充创建时间、更新时间等字段
还在通过切面拦截或者硬编码的方式来自动注入创建时间、更新时间等字段吗?通过以上方法来设置这些字段未免有些过于麻烦,所以我们可以直接使用mybatis-plus的相关注解来实现自动填充。实现该功能我们只需两部即可实现。1. 添加注解我们只需要在对应字段上添加@TableField,然后设置好填充策略即可。@TableField(fill = FieldFill.INSERT)private Date createTime;@TableField(fill = FieldFill.UPDATE)原创 2022-02-26 20:34:05 · 6703 阅读 · 3 评论 -
《Mybatis学习-8》 select查询如何返回 List 和 Map
1原创 2020-02-16 17:05:50 · 1471 阅读 · 0 评论 -
《Mybatis学习-7》 # 和 $ 的区别
在mybatis中,sql使用 #{} 和 ${} 都是可以获取map中的值或者pojo对象属性中的值。那么接下来就说明一下他们的区别。mapper.xml中sqlselect * from employee where id = ${id} and name = #{name}使用log4j将语句输出到控制台:select * from employee where id ...原创 2020-02-16 15:15:45 · 175 阅读 · 0 评论 -
《Mybatis学习-6》mybatis映射文件中参数的处理
单个参数mybatis不会做特殊处理 ,查询时名字是不影响的(sql语句中的参数名和接口中方法的参数名可以不同)#{}:取出参数值多个参数mybatis 会做特殊处理;多个参数会被分装成一个mapkey: param1....paramN,或者参数的索引也可以(0,1,2,,,,N)value:传入的参数值 #{}就是从map中获取指定的key的值...原创 2020-02-13 18:46:56 · 172 阅读 · 0 评论 -
《Mybatis学习-5》Mybatis进行插入操作时如何获取自增主键值和非自增主键值
很多时候,我们插入一条数据之后需要获得他的主键值,在mybatis中我们该咋整呢???接下来分两种情况,一种是自增主键值,例如我们的mysql数据库;一种是非自增主键值,例如orcale数据库,他是使用的序列来模拟自增。接下来我们按照这两种情况说明一下我们该如何获取主键值。自增主键值的获取自增主键值的获取是比较简单的,在使用原生JDBC的时候我们可以使用statement.getGenre...原创 2020-02-13 18:12:24 · 520 阅读 · 0 评论 -
《Mybatis学习-4》Mybatis增删改的基本操作
接口需要注意的是,mybatis中增删改是可以定义Integer、Long、Boolean、void这些返回类型的;比如我们将更新操作的返回类型定义为Integer,如果你更新成功会返回 1 ,失败则会返回 0 ;在实际开发中,我们可以根据返回值进行相对应的逻辑操作。public interface EmployeeMapper { Employee getEmpById(Int...原创 2020-02-13 17:19:27 · 157 阅读 · 0 评论 -
《Mybatis学习-3》Mybatis的全局配置文件
引入dtd约束正常我们编码的时候 Alt+/ 会有提示信息告诉我们有哪些标签我们可以使用。但是在全局配置文件中,我们发现没有任何提示信息,所以这个时候我们需要引入dtd约束。方法很简单,就是下图标记的dtd链接,我们按住ctrl并单击他进行下载,这个时候我们的配置文件就会有提示信息了!接下来就是介绍一些常用的标签了,我们需要注意的是在全局配置文件中,标签是有顺序的,不能随意更改标签的位...原创 2020-02-13 00:00:24 · 302 阅读 · 0 评论 -
《Mybatis学习-2》Mybatis的接口式编程
mybatis最基本的增删改查是存在一些问题的。因为他第二个参数的类型是object类型,但是数据库中对应的id是int类型,我们这边传入字符(比如:abc)的话,运行是会出错的。所以为了能够限制参数的类型,我们还是使用接口式编程吧。Employee employee = openSession.selectOne("njci.software.Emp...原创 2020-02-12 17:47:09 · 121 阅读 · 0 评论 -
《Mybatis学习-1》Mybatis的下载及简单调试
下载地址:https://github.com/mybatis/mybatis-3步骤1下载自己需要的版本简单调试1、首先我们先将准备工作做好,先创建数据表。2、·创建工程创建普通的java工程,首先创建和数据库表对应的映射文件Emplyee;创建一个普通的文件夹,将mybatis.jar和数据库连接使用的jar复制进去,右键jar包 选择 buil...原创 2020-02-12 17:19:51 · 270 阅读 · 0 评论 -
Mybatis简介
简介MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs映射成数据库中的记录。优点:1、简单易学!我觉得这才是最重要的!2、sql和Java编码分开,功能边界清晰,一个专注...原创 2020-02-12 15:32:11 · 181 阅读 · 0 评论