
框架-myBatis
文章平均质量分 93
九师兄
可免费问问题,可以一次订阅,终身免费问问题。工作多年遇到的问题,与一些总结,注意事项等,有些是源码级别的讲解,同时整个博客是成体系的,里面有很多连接互相连接,问题都是拆开的,能让大家遇到问题的时候方便的解决问题,或者提供思路。也可以单独找我解决问题。
展开
-
【MyBatis】类型处理器(typeHandlers)、自定义typeHandlers
你可以重写已有的类型处理器或创建你自己的类型处理器来处理不支持的或非标准的类型。具体做法为:实现接口, 或继承一个很便利的类, 并且可以(可选地)将它映射到一个 JDBC 类型。} }使用上述的类型处理器将会覆盖已有的处理 Java String 类型的属性以及 VARCHAR 类型的参数和结果的类型处理器。要注意 MyBatis 不会通过检测数据库元信息来决定使用哪种类型,所以你必须在参数和结果映射中指明字段是 VARCHAR 类型, 以使其能够绑定到正确的类型处理器上。转载 2024-07-03 00:30:00 · 495 阅读 · 0 评论 -
【MyBatis】MyBatis XML 映射文件详解
你需要指定目标属性名以及属性的javaType(很多时候 MyBatis 可以自己推断出来),在必要的情况下你还可以设置 JDBC 类型,如果你想覆盖获取结果值的过程,还可以设置类型处理器。你可能想把它映射到一个智能的对象模型,这个对象表示了一篇博客,它由某位作者所写,有很多的博文,每篇博文有零或多条的评论和标签。我们先来看看下面这个完整的例子,它是一个非常复杂的结果映射(假设作者,博客,博文,评论和标签都是类型别名)。虽然,即使不指定这个属性,MyBatis 仍然可以工作,但是会产生严重的性能问题。转载 2024-07-04 00:45:00 · 462 阅读 · 0 评论 -
【MyBatis】环境配置(environments)
MyBatis 可以配置成适应多种环境,这种机制有助于将 SQL 映射应用于多种数据库之中, 现实情况下有多种理由需要这么做。例如,开发、测试和生产环境需要有不同的配置;或者想在具有相同 Schema 的多个生产数据库中使用相同的 SQL 映射。还有许多类似的使用场景。。所以,如果你想连接两个数据库,就需要创建两个 SqlSessionFactory 实例,每个数据库对应一个。为了指定创建哪种环境,只要将它作为可选的参数传递给 SqlSessionFactoryBuilder 即可。转载 2024-07-04 00:45:00 · 289 阅读 · 0 评论 -
【MyBatis】为什么不推荐使用 MyBatis 二级缓存
仅供自己学习。建议大家去看原文。为了增加查询的性能,mybatis 提供了二级缓存架构,分为一级缓存和二级缓存。这两级缓存最大的区别就是:一级缓存是会话级别的,只要出了这个 SqlSession,缓存就没用了。而二级缓存可以跨会话,多个会话可以使用相同的缓存!一级缓存使用简单,默认就开启。二级缓存需要手动开启,相对复杂,而且要注意的事项也多,否则可能有隐患。转载 2023-11-07 22:25:55 · 592 阅读 · 0 评论 -
【MyBatis】MyBatis 缓存相关
除了上述自定义缓存的方式,你也可以通过实现你自己的缓存,或为其他第三方缓存方案创建适配器,来完全覆盖缓存行为。这个示例展示了如何使用一个自定义的缓存实现。type 属性指定的类必须实现 org.apache.ibatis.cache.Cache 接口,且提供一个接受 String 参数作为 id 的构造器。这个接口是 MyBatis 框架中许多复杂的接口之一,但是行为却非常简单。你可以使用所有简单类型作为 JavaBean 属性的类型,MyBatis 会进行转换。你也可以使用占位符(如。转载 2023-11-07 22:16:30 · 94 阅读 · 0 评论 -
【MyBatis】MyBatis 启动流程
1.概述转载:MyBatis 启动流程MyBatis 是第一个支持自定义 SQL、存储过程和高级映射的类持久框架。MyBatis 消除了大部分 JDBC 的样板代码、手动设置参数以及检索结果。MyBatis 能够支持简单的 XML 和注解配置规则。使 Map 接口和 POJO 类映射到数据库字段和记录。2.MyBatis 的特点那么 MyBatis 具有什么特点呢?或许我们可以从如下几个方面来描述MyBatis 中的 SQL 语句和主要业务代码分离,我们一般会把 MyBatis 中的 SQL 语.转载 2022-05-14 18:41:34 · 1643 阅读 · 0 评论 -
【MyBatis】MyBatis 二级缓存全详解
上一篇文章中我们介绍到了 MyBatis 一级缓存其实就是 SqlSession 级别的缓存,什么是 SqlSession 级别的缓存呢?一级缓存的本质是什么呢?以及一级缓存失效的原因?我希望你在看下文之前能够回想起来这些内容。,那么如果多个 SqlSession 需要共享缓存,则需要开启二级缓存,开启二级缓存后,会使用 CachingExecutor 装饰 Executor,进入一级缓存的查询流程前,先在CachingExecutor 进行二级缓存的查询,具体的工作流程如下所示。转载 2022-05-14 15:42:25 · 15301 阅读 · 8 评论 -
【MyBatis】MyBatis 一级缓存
缓存就是内存中的一个对象,用于对数据库查询结果的保存,用于减少与数据库的交互次数从而降低数据库的压力,进而提高响应速度。MyBatis 中的缓存就是说 MyBatis 在执行一次SQL查询或者SQL更新之后,这条SQL语句并不会消失,而是被MyBatis 缓存起来,当再次执行相同SQL语句的时候,就会直接从缓存中进行提取,而不是再次执行SQL命令。MyBatis中的缓存分为一级缓存和二级缓存,一级缓存又被称为 SqlSession 级别的缓存,二级缓存又被称为表级缓存。SqlSession是什么?转载 2022-05-14 15:19:40 · 4798 阅读 · 3 评论 -
【MyBatis】MyBatis 核心配置综述之 ResultSetHandler
1.概述转载:核心配置综述之 ResultSetHandler我们之前介绍过了MyBatis 四大核心配置之 Executor、StatementHandler、 ParameterHandler,今天本文的主题是介绍一下 MyBatis 最后一个神器也就是 ResultSetHandler。那么开始我们的讨论2.ResultSetHandler 简介回想一下,一条 SQL 的请求过程会经过哪几个步骤?首先会经过 Executor 执行器,它主要负责管理创建 StatementHandler 对.转载 2022-05-14 12:26:02 · 2116 阅读 · 0 评论 -
【MyBatis】MyBatis 核心配置综述之 ParameterHandler
1.概述转载:核心配置综述之 ParameterHandlerMyBatis 四大核心组件我们已经了解到了两种,一个是 Executor ,它是MyBatis 解析SQL请求首先会经过的第一道关卡,它的主要作用在于创建缓存,管理 StatementHandler 的调用,为 StatementHandler 提供 Configuration 环境等。StatementHandler 组件最主要的作用在于创建 Statement 对象与数据库进行交流,还会使用 ParameterHandler 进行参.转载 2022-05-14 11:46:47 · 2012 阅读 · 0 评论 -
【MyBatis】MyBatis 核心配置综述之StatementHandler
1.概述转载:核心配置综述之StatementHandler2.MyBatis 四大组件之StatementHandlerStatementHandler 是四大组件中最重要的一个对象,负责操作 Statement 对象与数据库进行交流,在工作时还会使用 ParameterHandler 和 ResultSetHandler 对参数进行映射,对结果进行实体类的绑定我们在搭建原生JDBC的时候,会有这样一行代码Statement stmt = conn.createStatement(); //也可转载 2022-05-14 11:16:34 · 2064 阅读 · 0 评论 -
【MyIbatis】MyBatis 核心配置综述之Executor
1.概述转载:MyBatis 核心配置综述之Executor上一篇我们对SqlSession和SqlSessionFactory的创建过程有了一个详细的了解,但上述的创建过程只是为SQL执行和SQL映射做了基础的铺垫而已,就和我们Spring源码为Bean容器的加载进行许多初始化的工作相同,那么做好前期的准备工作接下来该做什么了?该做数据库连接驱动管理和SQL解析工作了!那么本篇本章就来讨论一下数据库驱动连接管理和SQL解析的管理组件之 Executor执行器。2.MyBatis四大组件之 Exec.转载 2022-05-11 22:52:28 · 1789 阅读 · 0 评论 -
【MyIbatis】MyIbatis 重要的类 Configuration 的创建
1.概述转载:MyBatis 想启动?得先问问它同不同意话说,我最近一直在研究 MyBatis ,研究 MyBatis ,必然逃不了研究 Configuration 对象,这个对象简直是太重要了,它是 MyBatis 起步的核心环境配置,下面我们来一起看一下 Configuration 类2.Configuration 的创建如果你喜欢一个妹子,你是不是闲得问清楚妹子住在哪?只加微信那就只能望梅止渴,主动出击才是硬道理。否则,就算你租了一辆玛莎拉蒂,你都不知道在哪装B。想要了解 Configura转载 2022-05-11 21:37:32 · 472 阅读 · 0 评论 -
【MyBatis】MyBatis 基础搭建及架构概述
1.概述转载:MyBatis 基础搭建及架构概述2.MyBatis 是什么?MyBatis是第一个支持自定义SQL、存储过程和高级映射的类持久框架。MyBatis消除了大部分JDBC的样板代码、手动设置参数以及检索结果。MyBatis能够支持简单的XML和注解配置规则。使Map接口和POJO类映射到数据库字段和记录。下面我们通过一个简单的项目搭建来带你认识一下MyBatis的使用和一些核心组件的讲解。3.MyBatis 项目构建为了快速构建一个MyBatis项目,我们采用SpringBoot快速转载 2022-05-11 21:36:56 · 413 阅读 · 0 评论 -
【MyBatis】MyBatis Order By 字段动态动态排序
我想根据某个字段排序,但是却不想一个一个的写,希望传参,知道怎么传参 orderBy的字段和排序方式吗?我这样传递,不报错 但是没有排序,写死的那种能排序后来才知道要改成但是字段你要限制,防止sql注入【Mybatis】#{}与${}区别、传参作为字段/表名。原创 2021-12-16 15:39:37 · 1701 阅读 · 0 评论 -
【MyBatis】Mybatis使用SqlSessionFactory加载xml文件
1.概述MyBatis框架主要是围绕着SqlSessionFactory这个类进行的,这个的创建过程如下:定义一个Configuration对象,其中包含数据源、事务、mapper文件资源以及影响数据库行为属性设置settings通过配置对象,则可以创建一个SqlSessionFactoryBuilder对象通过 SqlSessionFactoryBuilder 获得SqlSessionFactory 的实例。SqlSessionFactory 的实例可以获得操作数据的SqlSession实例.原创 2020-07-18 09:51:19 · 2433 阅读 · 1 评论 -
MyIbatis :不使用XML和注解@Mapper以及MapperScan
1.美图2.概述一种操作方法3.配置原创 2020-07-04 11:22:16 · 2410 阅读 · 0 评论 -
myBatis如何返回count(*)得到的int值
resultMap="java.lang.Integer" 改成 resultType="java.lang.Integer" <select id="getSameComparedAlert" resultType="java.lang.Integer" > select count(distinct a.jjdbh ) from jjdb as a ...原创 2018-03-22 14:54:46 · 3568 阅读 · 0 评论 -
ibatis中#和$符号的区别
ibatis中#和$符号的区别在我们使用ibatis过程中,写sqlmap配置文件时经常会用到两个特殊的传值符号#和$符合,下面根据个人的分析总结,两者的区别。数据类型匹配:会进行预编译,而且进行类型匹配;$:不进行数据类型匹配。如:变量name的类型是string, 值是”张三”的时候 $name$ = 张三 #name...原创 2018-03-21 15:47:28 · 2025 阅读 · 0 评论 -
org.postgresql.util.PSQLException: 栏位索引超过许可范围:1,栏位数:0
使用public interface SysCodeDao { String getCodeByName(@Param("area") String area);}xml配置<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Ma...原创 2018-04-09 16:49:37 · 9520 阅读 · 3 评论 -
浅谈 Mybatis中的 ${ } 和 #{ }的区别
一、举例说明select * from user where name = "dato"; select * from user where name = #{name}; select * from user where name = '${name}'; 一般情况下,我们都不会注意到这里面有什么不一样的地方。因为这些sql都可以达到我们的目的,去查询名字叫dato的用户。二、区...原创 2018-04-09 16:54:08 · 967 阅读 · 0 评论 -
MyBatis传入参数为list、数组、map写法
如果传入的参数只是一个list&lt;foreach collection="要遍历传入的list集合参数名称(假设为peopleList)" item="此处随意定义,为集合每次循环得到的对象(假设为people)" open="(" seperate="循环后结果输出分隔符" close=")"&a原创 2018-03-27 17:54:50 · 2777 阅读 · 0 评论 -
MyBatis插入数据返回插入对象的主键
方法:在mapper中指定keyProperty属性,示例如下:主要: useGeneratedKeys=”true” keyProperty=”userId” //userId为返回的主键对应的java对象的属性<insert id="insert" useGeneratedKeys="true" keyProperty="userId" parameterType="com.yh...原创 2018-06-22 20:57:49 · 3725 阅读 · 0 评论 -
spring集成mybatis后,打印SQL语句
sds原创 2018-09-05 16:58:34 · 2136 阅读 · 1 评论 -
MyIbatis使用trim灵活的插入
<insert id="insert" useGeneratedKeys="true" keyProperty="rId" parameterType="com.dtwave.dipper.megrez.server.entity.HdfsUserActionEntity"> insert into hdfs_authoritry( <trim ...原创 2018-09-18 15:41:40 · 878 阅读 · 0 评论 -
springboot+mybatis日志显示SQL
在springBoot+Mybatis日志显示SQL的执行情况的最简单方法就是在properties新增:logging.level.com.dy.springboot.server.mapper=debug注意:其中logging.level.com.你的Mapper包=日志等级...原创 2018-10-17 21:13:27 · 4210 阅读 · 0 评论 -
MyBatis目录
网上说mybatis的早前版本配置打印sql还比较简单,在3.0.6之后配置方式修改了。现在的spring-mybatis.xml配置如下:&amp;amp;lt;bean id=&amp;quot;sqlSessionFactory&amp;quot; class=&amp;quot;org.mybatis.spring.SqlSessionFactoryBean&amp;quot;&amp;amp原创 2018-03-15 15:01:14 · 626 阅读 · 0 评论