![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Mybatis入门
文章平均质量分 91
shizhiqian0021
这个作者很懒,什么都没留下…
展开
-
MyBatis 总结
MyBatis 的执行流程大概可以拆分为如下几个部分: 初始化配置 解析 mybatis-config.xml 文件 根据 mybatis-config.xml 文件中的配置,依次解析 Mapper.xml 文件 将 Mapper.xml 与 接口 通过 xml 文件的 namespace 属性来进行绑定**【重点】**;该篇有介绍 XML 文件和 接口进行绑定做了一些介绍 》》》 MyBatis 动态代理 解析 Mapper.xml 中的 SQL 语句;将 SQL 语句根据标签进行拆分开;【重点原创 2020-07-01 18:19:30 · 107 阅读 · 0 评论 -
SpringBoot 集成 MyBatis 及简解
Demo 介绍 首先在 pom.xml 文件中引入相关的依赖: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.2.RELEASE</version> </parent>原创 2020-06-29 18:01:44 · 155 阅读 · 0 评论 -
PageHelper执行流程及自定义MyBatis插件实现
PageHelper 通过集成 MyBatis 的 Interceptor 接口,来实现分页插件的功能。 首先要使用 PageHelper ,需要的 pom.xml 文件中引入 PageHelper 的依赖: <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.1.原创 2020-06-28 23:25:32 · 758 阅读 · 0 评论 -
MyBatis 入门 (二级缓存脏读)
关于 MyBatis 二级缓存数据脏读问题 为方便理解,本章涉及示例代码已上传至 gitee ==>获取示例代码请点击这里。。。 拉取示例代码时,请拉取所有分支,master 分支只是做了示例的初始化 关于二级缓存的数据脏读,产生的原因是因为二级缓存的作用域是基于 Mapper 文件的。 即:现在假设一种情况:我们要同时查询出包含用户角色信息的用户信息,这是,我们会通过连接查询,对用户表和角色表进行连接查询,关联条件是:user.role_id = role.id;当用户数据查询出来以后,会将缓存原创 2020-06-26 18:12:07 · 2054 阅读 · 1 评论 -
MyBatis 入门 (MyBatis 缓存应用之RedisCache)
Redis 缓存 为方便理解,本章涉及示例代码已上传至 gitee ==>获取示例代码请点击这里。。。 拉取示例代码时,请拉取所有分支,master 分支只是做了示例的初始化 MyBatis 与 Redis 的集成,我们在这里只简单介绍,因为在日常的开发中,通常是通过 Spring 系列框架来完成整合 MyBatis 与 Redis 的,所以,这里不在配置方面多做介绍,重点关注是如何实现将 MyBatis 的查询结果存入 Redis 中的,在后续 Spring 整合 MyBatis 时,我们会着重介绍原创 2020-06-25 22:49:58 · 1196 阅读 · 0 评论 -
MyBatis 入门 (MyBatis 缓存应用之Ehcache)
Ehcache 缓存 为方便理解,本章涉及示例代码已上传至 gitee ==>获取示例代码请点击这里。。。 拉取示例代码时,请拉取所有分支,master 分支只是做了示例的初始化 该节仅作了解,推荐使用 Redis 实现方式 在 MyBatis 的二级缓存中使用 Ehcache ,只需如下配置即可,使用默认配置,即基于虚拟机内存实现缓存存储: // 在对应的 XML 文件中如下配置 // 将缓存的 type 设置为 Ehcache 实现类 <cache type="org.mybatis.cac原创 2020-06-25 01:09:44 · 300 阅读 · 0 评论 -
MyBatis 入门 (MyBatis 缓存应用之二级缓存)
二级缓存 为方便理解,本章涉及示例代码已上传至 gitee ==>获取示例代码请点击这里。。。 拉取示例代码时,请拉取所有分支,master 分支只是做了示例的初始化 MyBatis 的二级缓存的种类大致可以分为三种: MyBatis 框架默认的二级缓存实现 基于 JVM 虚拟机存储的 Ehcache 缓存 基于 Redis 的分布式缓存 在上一小节中提到过 MyBatis 中是通过 cacheEnabled 属性来设置是否启用二级缓存的,默认该值为 true ,即启用,接下来通过一张图来理解一下原创 2020-06-23 17:33:16 · 221 阅读 · 0 评论 -
MyBatis 入门 (MyBatis 缓存应用)
为方便理解,本章涉及示例代码已上传至 gitee ==>获取示例代码请点击这里。。。 拉取示例代码时,请拉取所有分支,master 分支只是做了示例的初始化 MyBatis 的缓存一共有两种,一级缓存、二级缓存;一级缓存为框架的默认缓存,不可修改配置,二级缓存可以修改和配置,要理解 MyBatis 的缓存过程,首先需要对 MyBatis 的执行器有一定的了解,下图为 MyBatis 的各执行器之间的关系: 当初始化 MyBatis 配置的时候,会创建一个 CachingExecutor 类型的对象,原创 2020-06-22 19:00:24 · 172 阅读 · 0 评论 -
MyBatis 的高级结果映射
MyBatis 的高级结果映射 为方便理解,本章涉及示例代码已上传至 gitee ==>获取示例代码请点击这里。。。 拉取示例代码时,请拉取所有分支,master 分支只是做了示例的初始化 MyBatis 的高级结果映射主要是针对一对一,一对多的表关系结果映射。 一对一结果映射 在使用多表联查的时候,想要将联查出来的另一个表的数据映射到主表映射对象上,需要在主表的实体对象中增加一个从表的对象属性,并添加 set、get 方法。 实现一对一映射共有三种方式: SQL 别名方式实现映射 SQL 别名与原创 2020-06-21 19:43:47 · 206 阅读 · 0 评论 -
MyBatis 入门 (九)
其他动态标签 以下介绍两个标签,由于在实际开发中不经常使用,这里只介绍简单用法: 标签的使用: 以模糊查询为例: 当数据库为 MySQL 数据库时,模糊查询关键字为: concat(’%’,property,’%0’);具体代码如下: MySQL 模糊查询 <if test = "userName != null and userName != ''"> and user_name like concat('%',#{userName},'%') </if>原创 2020-06-21 13:47:55 · 176 阅读 · 0 评论 -
MyBatis 入门 (参数绑定特别版)
MyBatis 接口参数与 XML SQL 参数实现动态拼接详解 接口参数解析 代码流程如下: 详情代码段: ParamNameResolver.class /** * @Param config MyBatis 的全局配置对象 * * @Param method 当前被调用的接口方法,由上一级的动态代理类传入 */ public ParamNameResolver(Configuration config, Method method) { // 获取方法的参数类型 fi原创 2020-06-20 17:24:46 · 639 阅读 · 0 评论 -
MyBatis 入门 (八)
foreach 用法 为方便理解,本章涉及示例代码已上传至 gitee ==>获取示例代码请点击这里。。。 先通过一段示例代码了解一下基本使用: <select id="selectByIds" resultType="SysUser"> select * from sys_user where 1 = 1 <if test="_parameter != null and _parameter.size() > 0 "&g原创 2020-06-19 18:46:59 · 327 阅读 · 0 评论 -
MyBatis 入门 (七)
MyBatis 动态 SQL 为方便理解,本章涉及示例代码已上传至 gitee ==>获取示例代码请点击这里。。。 MyBatis 的是通过在 XML 中支持一下几种标签来实现动态 SQL 的: if choose(when、otherwise) trim(where、set) foreach bind 下面依次介绍: if 用法 示例如下: <select id="selectAllUseIf" resultMap="UserEntity" > select * from原创 2020-06-18 19:04:21 · 175 阅读 · 0 评论 -
MyBatis 入门 (六)
Use MyBatis By Annotation @Select 先上一段示例代码: public interface SysPrivilegeMapper { // other Methods ... @Select(value = {"select id, ", "privilege_name privilegeName,", "privilege_url privilegeUrl", "from sys_pri原创 2020-06-17 22:37:26 · 151 阅读 · 0 评论 -
MyBatis 动态代理
MyBatis 动态代理 MyBatis 框架的动态代理是通过两个步骤完成的: 加载配置文件时,通过扫描到的接口类创建代理工厂类,并将其依次放到一个 Map 中: 大致的创建动态代理类的流程图如下: MapperRegistry.class public <T> void addMapper(Class<T> type) { if (type.isInterface()) { if (hasMapper(type)) { thr原创 2020-06-16 16:27:04 · 248 阅读 · 0 评论 -
MyBatis 入门 (四)
为方便理解,本章涉及示例代码已上传至 gitee ==>获取示例代码请点击这里。。。 Use Update <update> 标签的使用方法和 <insert> 标签大致相同,这里只贴出简单的示例代码,更多用法后续介绍 <update id="updateById" parameterType="SysUser"> update sys_user set user_name = #{userName}, user_p原创 2020-06-16 16:23:36 · 88 阅读 · 0 评论 -
MyBatis 入门 (三)
Use Insert 为方便理解,本章涉及示例代码已上传至 gitee ==>获取示例代码请点击这里。。。 首先先来实现一个简单的 Insert 查询: public interface SysUserMapper { // other methods ... Integer insertInfo(SysUser sysUser); } <insert id="insertInfo" parameterType="SysUser" > insert int原创 2020-06-15 17:14:39 · 368 阅读 · 1 评论 -
MyBatis 入门 (二)
Use MyBatis By XML 为了方便理解,代码已上传至 gitee https://gitee.com/shizhiqian0021/MyBatisDemo.git 现在数据库新建 5 张表,分别是:用户表,角色表,权限表,角色权限表,用户角色表 create table `sys_user`( `id` BIGINT not null auto_increment comment '用户ID', `user_name` VARCHAR(50) COMMENT '用户名', `user_pa原创 2020-06-14 18:35:45 · 285 阅读 · 0 评论 -
Mybatis 入门(一)
Mybatis入门 A Simple Demo 1. 首先我们在数据库中建一个 mydemo 库,在其下建一个表,建表示例 SQL 如下: DROP TABLE IF EXISTS `country`; CREATE TABLE `country` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `countryname` varchar(255) DEFAULT NULL COMMENT '国名', `countrycode原创 2020-06-13 14:59:07 · 3380 阅读 · 3 评论