
Mybatis
bingguang1993
这个作者很懒,什么都没留下…
展开
-
Mybatis调用MySQL存储过程
1.存储过程的简介我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。一个存储过程是一个可编程的函数,它在数据库中创建并保存。它可以有SQL语句和一些特殊的控制结构组成。当希望在不同的应用程序...转载 2020-05-07 16:52:37 · 735 阅读 · 0 评论 -
mybatis的缓存机制(一级缓存二级缓存和刷新缓存)和mybatis整合ehcache
1查询缓存1.1什么是查询缓存mybatis提供查询缓存,用于减轻数据压力,提高数据库性能。mybaits提供一级缓存,和二级缓存。一级缓存是SqlSession级别的缓存。在操作数据库时需要构造 sqlSession对象,在对象中有一个(内存区域)数据结构(HashMap)用于存储缓存数据。不同的sqlSession之间的缓存数据区域(HashMap)是互...转载 2020-04-28 10:40:28 · 427 阅读 · 0 评论 -
MyBatis中的一级缓存和二级缓存介绍
先说缓存,合理使用缓存是优化中最常见的,将从数据库中查询出来的数据放入缓存中,下次使用时不必从数据库查询,而是直接从缓存中读取,避免频繁操作数据库,减轻数据库的压力,同时提高系统性能。一级缓存一级缓存是SqlSession级别的缓存。在操作数据库时需要构造sqlSession对象,在对象中有一个数据结构用于存储缓存数据。不同的sqlSession之间的缓存数据区域是互相不影响的。也就是他只能...转载 2020-04-28 10:38:43 · 300 阅读 · 0 评论 -
MyBatis中#{}和${}的区别
MyBatis 中 #{} 和 ${} 的区别1、在MyBatis 的映射配置文件中,动态传递参数有两种方式:(1)#{} 占位符(2)${} 拼接符2、#{} 和 ${} 的区别(1)1)#{} 为参数占位符 ?,即sql 预编译2)${} 为字符串替换,即 sql 拼接...转载 2020-04-27 16:35:12 · 3069 阅读 · 1 评论 -
Error resolving JdbcType. Cause: java.lang.Ilenum constant org.apache.ibatis.type.JdbcType.integer
Caused by: org.apache.ibatis.builder.BuilderException: Error resolving JdbcType. Cause: java.lang.IllegalArgumentException: No enum constant org.apache.ibatis.type.JdbcType.integer at org.apache.i...原创 2020-03-13 17:14:45 · 1152 阅读 · 1 评论 -
SpringBoot Mybatis PageHelper插件报错
SpringBoot2.0.0 MyBatis1.3.2 PageHelper1.1.2插件,但是在启动运行时,抛错:org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.github.pagehelper.autoconfigure.PageHelperAutoCon...转载 2020-03-10 17:15:08 · 690 阅读 · 0 评论 -
深入浅出MyBatis:JDBC和MyBatis介绍
JDBC相关概念Java程序都是通过JDBC连接数据库的,通过SQL对数据库编程,JDBC是由SUN公司提出的一些列规范,只定义了接口规范,具体实现由各个数据库厂商去实现,它是一种典型的桥接模式。桥接模式是一种结构型设计模式,它的主要特点是把抽象与行为实现分离开来,分别定义接口,可以保持各部分的独立性以及应对他们的功能扩展。JDBC规范所谓规范,就是自己定义了标准接口,做了如下...转载 2020-01-22 10:27:54 · 324 阅读 · 0 评论 -
Mybatis原理--动态生成SQL
本文将带你分析Mybatis是如何动态生成SQL。首先,会根据源码分析框架初始化时xml文件的加载、解析、缓存过程。着重介绍 xml的解析过程 和 使用解析的结果,最后列举实例和对照源码DeBug分析:当DAO接口调用时标签的解析、参数的创建、SQL的生成过程,并总结整个流程。 数据的处理 Mybatis对数据的处理可以分为 用入参动态的拼装sql 和 对sql执行的结果封装成 Ja...转载 2019-12-31 09:57:34 · 1671 阅读 · 0 评论 -
MyBatis-Spring配置简单了解
MyBatis-Spring配置简单了解SqlSessionFactoryBean配置在基本的 MyBatis 中,session 工厂可以使用 SqlSessionFactoryBuilder 来创建。而在 MyBatis-Spring 中,则使用 SqlSessionFactoryBean 来替代。示例<bean id="sqlSessionFactory" class="or...转载 2019-12-24 17:50:12 · 167 阅读 · 0 评论 -
《深入理解mybatis原理》 MyBatis的架构设计以及实例分析
MyBatis是目前非常流行的ORM框架,它的功能很强大,然而其实现却比较简单、优雅。本文主要讲述MyBatis的架构设计思路,并且讨论MyBatis的几个核心部件,然后结合一个select查询实例,深入代码,来探究MyBatis的实现。一、MyBatis的框架设计注:上图很大程度上参考了iteye 上的chenjc_it所写的博文原理分析之二:框架整体设计 中的M...转载 2019-10-23 17:03:01 · 156 阅读 · 0 评论 -
mybatis深入理解(一)之 # 与 $ 区别以及 sql 预编译
mybatis 中使用 sqlMap 进行 sql 查询时,经常需要动态传递参数,例如我们需要根据用户的姓名来筛选用户时,sql 如下:select*fromuserwherename="ruhua";上述 sql 中,我们希望 name 后的参数 "ruhua" 是动态可变的,即不同的时刻根据不同的姓名来查询用户。在 sqlMap 的 xml 文件中使用如下的 sql 可...转载 2019-10-23 10:39:32 · 842 阅读 · 0 评论 -
Mybatis 查询返回List集合
本文链接:https://blog.youkuaiyun.com/sotong006/article/details/81697814返回List<String>集合时,需要将resultType的值定义为集合中元素类型,而不是返回集合本身。有时候,我们不需要整个表的所有字段,而是只需要某一个字段的内容,比如:我希望从资产表中查出所有资产的名称,并且不存在重复。 <selec...转载 2019-08-22 14:58:52 · 15246 阅读 · 1 评论 -
mybatis 批量将list数据插入到数据库
随着业务需要,有时我们需要将数据批量添加到数据库,mybatis提供了将list集合循环添加到数据库的方法。具体实现代码如下:1、mapper层中创建 insertForeach(List < Fund > list) 方法,返回值是批量添加的数据条数 package com.center.manager.mapper; import java.util.List;...转载 2019-07-25 14:54:10 · 587 阅读 · 0 评论 -
mybatis传入多参数,包含基本类型和对象等
public int update(String zhutiId, int level, String zhutiName) { Zhuti zhuti = new Zhuti(); zhuti.setZhutiId(zhutiId); zhuti.setCreditLevel(level); zhuti.setZhutiUpdat...转载 2019-07-24 10:43:19 · 2305 阅读 · 1 评论 -
mybatis传入map参数,map中包含list(输入参数)
1.xml中配置:<!-- 根据条件查询满足条件的ID集合开始 --> <select id="getQuestionsIdsForExamPaper" resultType="java.lang.String" parameterType="hashmap"> select questionId from ...转载 2019-07-11 14:38:49 · 3901 阅读 · 0 评论 -
mysql自增主键返回---创建成功后返回用户的ID
mysql自增主键返回查询id的sqlSELECT LAST_INSERT_ID()通过修改User.xml映射文件,可以将mysql自增主键返回:如下添加selectKey 标签<!-- 保存用户 --><insert id="saveUser" parameterType="cn.itcast.mybatis.pojo.User"> <...转载 2019-07-03 19:35:34 · 1329 阅读 · 1 评论 -
Spring与Mybatis整合的MapperScannerConfigurer处理过程源码分析
本文将分析mybatis与spring整合的MapperScannerConfigurer的底层原理,之前已经分析过java中实现动态,可以使用jdk自带api和cglib第三方库生成动态代理。本文分析的mybatis版本3.2.7,mybatis-spring版本1.2.2。MapperScannerConfigurer介绍MapperScannerConfigurer是spring和m...转载 2019-05-10 20:08:30 · 148 阅读 · 0 评论 -
DBCP数据源 和c3p0
Spring在第三方依赖包中包含了两个数据源的实现类包,其一是Apache的DBCP,其二是C3P0。可以在Spring配置文件中利用这两者中任何一个配置数据源。DBCP数据源DBCP类包位于/lib/jakarta-commons/commons-dbcp.jar,DBCP是一个依赖Jakartacommons-pool对象池机制的数据库连接池,所以在类路径下还必须包...转载 2019-05-10 16:08:58 · 333 阅读 · 0 评论 -
mybatis空指针异常总结
1.当传入的是个实体类,并且sql中用的实体类中Integer id ,当传入实体类为new的时候不报错,此时id=null; 并且可正常返回空集合2.当传入的是Integer id ,此时id=null; 并且可正常返回空集合3.如果service层是Integer id,dao层是 int id,当id=null时会报异常4。如果传入的是List集合,集合不能为空,为空报异...原创 2019-01-26 15:24:12 · 10641 阅读 · 0 评论 -
MyBatis 插入空值时,需要指定JdbcType.如#{name,jdbcType=VARCHAR}
在执行SQL时MyBatis会自动通过对象中的属性给SQL中参数赋值,它会自动将Java类型转换成数据库的类型。而一旦传入的是null它就无法准确判断这个类型应该是什么,就有可能将类型转换错误,从而报错。要解决这个问题,需要针对这些可能为空的字段,手动指定其转换时用到的类型。一般情况下,我们没有必要按个字段去识别/判断它是否可以为空,而是将所有的字段都当做可以为空,全部手动设置转换类型。...转载 2019-01-26 10:39:18 · 1398 阅读 · 0 评论 -
mybatis中include以及sql的用法
<select id="findCustomer" parameterType="String" resultType="cn.itcast.util.Customer"><include refid="selectCus"></include></select> <sql id=&qu原创 2018-07-21 12:56:29 · 1786 阅读 · 0 评论 -
MyBatis中 sql标签和include标签的使用
阅读数:42051<sql> 和 <include><sql>用来封装SQL语句, <include>来调用代码片段:<sql id="select">SELECT * FROM `body_index` </sql><select id="find" resultType="*转载 2018-07-15 14:51:46 · 943 阅读 · 0 评论 -
MyBatis实现模糊查询的几种方式
在学习MyBatis过程中想实现模糊查询,可惜失败了。后来上百度上查了一下,算是解决了。记录一下MyBatis实现模糊查询的几种方式。 数据库表名为test_student,初始化了几条记录,如图: 起初我在MyBatis的mapper文件中是这样写的: <select id="searchStudents" resultType="com.examp...转载 2018-07-19 12:07:31 · 433 阅读 · 0 评论 -
MyBatis--主配置文件详解
MyBatis--主配置文件详解主配置文件可以随便命名,其主要完成以下几个功能:注册存放DB连接四要素的属性文件注册实体类的权限定性类名的别名配置MyBatis运行环境,即数据源与事务管理器注册映射文件MyBatis.xml:<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//m...转载 2018-06-01 11:51:08 · 325 阅读 · 0 评论 -
Mybatis中的小知识
1.传入参数是基本数据类型时,#{}中可以随便写2.selectList查询时在resultType中只需写上实体类的路径即可,无需写List3.模糊查询时传入是String类型,session.selectList("Customer.selectCustomerList","%n%");可这样写...原创 2018-05-11 14:53:11 · 135 阅读 · 0 评论 -
Mybatis choose (when, otherwise)标签
choose标签是按顺序判断其内部when标签中的test条件出否成立,如果有一个成立,则 choose 结束。当 choose 中所有 when 的条件都不满则时,则执行 otherwise 中的sql。类似于Java 的 switch 语句,choose 为 switch,when 为 case,otherwise 则为 default。例如下面例子,同样把所有可以限制的条件都写上,方面使用。...转载 2018-03-06 10:02:21 · 192 阅读 · 0 评论 -
MyBatis动态SQL使用,传入参数Map中的Key判断
当使用Map做为参数时,可以用_parameter.containsKey(变量名)来判断map中是否包含有些变量:[html] view plaincopy<select id="selectRule" parameterType="Map" resultType="com.ourangel.weixin.domain.Rule"> SELECT ruleId,msgTyp...转载 2018-02-28 10:29:30 · 1644 阅读 · 0 评论 -
Mybatis中mapper文件传递字段为null更新到数据库
需要在其中加上jdbcType,例如 #{username,jdbcType=varchar}原创 2018-02-28 10:25:46 · 6558 阅读 · 0 评论 -
MyBatis传入参数为list、数组、map写法
1.foreach简单介绍:foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。foreach元素的属性主要有item,index,collection,open,separator,close。item表示集合中每一个元素进行迭代时的别名,index指定一个名字,用于表示在迭代过程中,每次迭代到的位置,open表示该语句以什么开始,separat...转载 2018-07-21 17:18:40 · 221 阅读 · 0 评论 -
mabatis中的<和>
两者皆为转义字符,&lt; 代表 < 小于号&gt; 代表 > 大于号转载 2018-08-30 17:16:43 · 2533 阅读 · 0 评论 -
RowBounds代码实现分页功能
首先我们了解一下物理分页和逻辑分页物理分页:直接从数据库中拿出我们需要的数据,例如在Mysql中使用limit逻辑分页:从数据库中拿出所有符合要求的数据,然后再从这些数据中拿到我们需要的分页数据优缺点物理分页每次都要访问数据库,逻辑分页只访问一次物理分页占用内存少,逻辑分页相对较多物理分页数据每次都是最新的,逻辑分页有可能滞后我们再来看RowBounds,我们可以通过R...转载 2019-01-25 10:46:35 · 861 阅读 · 0 评论 -
mybatis 实现批量更新多个字段
一条记录update一次,性能比较差,容易造成阻塞。MySQL没有提供直接的方法来实现批量更新,但可以使用case when语法来实现这个功能。 1 2 3 4 5 6 7 8 9 10 11 12 UPDATE course SET name = CASE ...转载 2018-10-24 16:45:12 · 3779 阅读 · 0 评论 -
mybatis 批量更新update详解
1 更新单条记录 UPDATE course SET name = 'course1' WHEREid = 'id1';2 更新多条记录的同一个字段为同一个值 UPDATE course SET name='course1' WHERE id in('id1','id2','id3);3 更新多条记录为多个字段为不同的值比较普通的写法,是通过循环,依次执行update语...转载 2018-10-24 14:50:25 · 1342 阅读 · 0 评论 -
mybatis学习之路----批量更新数据两种方法效率对比
上节探讨了批量新增数据,这节探讨批量更新数据两种写法的效率问题。实现方式有两种,一种用for循环通过循环传过来的参数集合,循环出N条sql,另一种 用mysql的case when 条件判断变相的进行批量更新 下面进行实现。注意第一种方法要想成功,需要在db链接url后面带一个参数 &allowMultiQueries=true即: jdbc:mysql://...转载 2018-10-24 10:38:16 · 721 阅读 · 0 评论 -
choose ,when ,otherwise
有时候我们并不想应用所有的条件,而只是想从多个选项中选择一个。而使用if标签时,只要test中的表达式为 true,就会执行 if 标签中的条件。MyBatis 提供了 choose 元素。if标签是与(and)的关系,而 choose 是或(or)的关系。 choose标签是按顺序判断其内部when标签中的test条件出否成立,如果有一个成立,则 choose 结束。当 choose 中所有...转载 2018-10-17 15:54:51 · 8545 阅读 · 0 评论 -
MyBatis实现查询结果按照查询参数的顺序排序
查询id为指定id的学生集合。查询参数为list,即学生id的集合,list泛型为Integer,比如list中的元素为151,208,4,118,109,正常的查询,返回的list结果集,遍历学生id放在另一个list结果集中,也就是查询结果学生id的集合为4,109,118,151,208。 <select id="getStudentListByIdList" parame...转载 2018-09-28 14:28:44 · 5788 阅读 · 0 评论 -
Mybatis-Spring 的高级配置 (SqlSessionFactoryBean)
一、SqlSessionFactoryBeanmybatis-spring 官网在基本的 MyBatis 中,session 工厂可以使用 SqlSessionFactoryBuilder 来创建。而在 MyBatis-spring 中,则使用SqlSessionFactoryBean 来替代: <bean id="sqlSessionFactory" class="...转载 2018-08-30 15:03:36 · 3944 阅读 · 0 评论 -
mybatis中数组传递注意事项--简
mybatis传递数组数据---本人了解两种第一种:直接传递数组数据mapper中的配置: <delete id="deleteBrandByIdsArray" parameterType="Integer[]"> delete from bbs_brand <where> id <foreac...转载 2018-08-30 17:18:17 · 357 阅读 · 0 评论 -
MyBatis中传入参数为List集合的
1. <update id="deleteQnrCount" parameterType="java.util.List"> update t_qs_qnr_count set COUNT_STS_CD='2' where COUNT_ID IN <foreach collection="list" item=...原创 2018-03-06 20:30:42 · 10481 阅读 · 0 评论