
mybaits
一朵风中摇曳的水仙花
世人多愿锦上添花,却少有人雪中送炭
展开
-
快速搭建SSM(Spring,SpringMVC,Mybatis)环境详细过程
快速搭建SSM(Spring,SpringMVC,Mybatis)环境详细过程我是做移动(Android)开发的,这几天利用项目空隙大概学习了数据接口的相关知识,在这里主要记录一下搭建SSM环境的操作过程。所谓“工欲善其事必先利其器”,搭建开发环境往往是学习的第一步,其实这么说不太准确,选择使用什么环境才是最先应该考虑的,暂时叫做第零步吧。 快速搭建SSMSpringSpringMVC...转载 2019-01-07 21:42:55 · 150 阅读 · 0 评论 -
mybatis批量更新及其效率问题
mybatis批量更新及其效率问题 一:背景 注意: 第一种: 第二种: 二:批量更新的方式总结: 第一种: 第二种: 三:总结: 最近,负责公司一些旧数据的批量整理和清洗工作,在网上寻找了两种mybatis批量更新的方法。现在在这里总结下和说明下遇到的问题。一:背景公司旧数据的清洗,比如图片路径的改变,日期格式的改变(日期格式是varchar),因为数据大体上有一定的规律可寻,所以我的解决思路是用mybatis操转载 2020-11-10 14:10:57 · 1127 阅读 · 0 评论 -
mybatis+mysql返回自增长主键的2种方式
一、第一种方式<insert id="addUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">INSERT INTO users (username,password,nickname,token,reg_time,login_time) VALUES (#{username},#{password},#{nickname},#{token},#{regTime},#{loginTime})</转载 2020-07-05 10:00:51 · 346 阅读 · 1 评论 -
mybatis返回map类型数据空值字段不显示
一、查询sql添加每个字段的判断空(不推荐)IFNULL(rate,'') as rate二、ResultType利用实体返回,不用map(不符合我的需求)三、springMVC+mybatis查询数据,返回resultType=”map”时,如果数据为空的字段,则该字段省略不显示,可以通过添加配置文件,规定查询数据为空是则返回null。(推荐,且符合我的需求)<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE config原创 2020-07-04 15:33:45 · 872 阅读 · 0 评论 -
mybatis自学之路-01(逆向工程并自定义注释)
目录1.配置文件generatorConfig.xml2.注释生成设置类3.启动类1.配置文件generatorConfig.xml<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/m原创 2020-06-07 17:48:12 · 509 阅读 · 0 评论 -
xml转义字符在mybatis动态sql中的使用
一,常用转义字符表 < < 小于号 > > 大于号 & & 和 ' ’ 单引号 " " 双引号 二,使用方法示例 <if tes...转载 2019-11-18 10:22:53 · 326 阅读 · 0 评论 -
项目中Hibernate与Mybatis如何共存
前段时间接触了一个新项目,里面比较臃肿,用的是hibernate的ORM框架。个人比较讨厌把sql写在代码里面。非常想把ORM框架换成mybatis,但是也不能影响现有流程,已有的hibernate不能动,那就只能考虑Hibernate与Mybatis如何共存的问题。于是就搜到了以下的文章。其实总体来说,Hibernate与Mybatis各自配置好各自的配置即可,他俩之间并不会互相影响。...原创 2019-10-12 14:57:45 · 2602 阅读 · 0 评论 -
mybatis有两个内置参数
<!--mybatis有两个内置参数: _databaseId:如果配置了databaseIdProvider标签,_databaseId则表示当前数据库的别名,例如mysql或者oracle _parameter:代表整个参数, 如果是单个参数,_parameter就表示这个参数; 如果是多个参数,参数会被放入map中,_parameter就表示这个ma...原创 2019-09-04 10:59:31 · 419 阅读 · 0 评论 -
SSM+redis整合(mybatis整合redis做二级缓存)
SSM:是Spring+Struts+Mybatis ,另外还使用了PageHelper 前言: 这里主要是利用redis去做mybatis的二级缓存,mybaits映射文件中所有的select都会刷新已有缓存,如果不存在就会新建缓存,所有的insert,update操作都会更新缓存。(这里需要明白对于注解写的SQL语句不会操作缓存,我的增加方法是注解写的就没有清空缓存,后来改为X...转载 2019-01-08 16:25:26 · 291 阅读 · 1 评论 -
redis作为mybatis的二级缓存
redis作为二级缓存服务器,来替代mybatis的二级缓存,至于二级缓存有什么缺点我想大家都懂吧, [service] 2016-08-31 21:01:32,912 - com.erp.dao.TestMybatisMapper.selectByPrimaryKey -19446 [http-nio-8080-exec-6] DEBUG com.erp.dao.TestMybatis...转载 2019-01-08 16:11:11 · 205 阅读 · 0 评论 -
mybatis+redis+mybatis-redis实现二级缓存
mybatis-redis源码: https://github.com/mybatis/redis-cachemybatis-redis官网说明: http://www.mybatis.org/redis-cache/index.html说明:1、MyBatis默认开启二级缓存2、MyBatis默认实现了自己的二级缓存(PerpetualCache),内部使用HashMap实现,无...转载 2019-01-08 16:02:01 · 197 阅读 · 0 评论 -
Mybatis四种分页方式
数组分页查询出全部数据,然后再list中截取需要的部分。mybatis接口List<Student> queryStudentsByArray();xml配置文件 <select id="queryStudentsByArray" resultMap="studentmapper"> select * from student &...转载 2019-03-17 11:46:38 · 1821 阅读 · 0 评论 -
Mybatis框架学习(四)—查询缓存与spring的整合开发
转载 2019-03-18 15:39:33 · 122 阅读 · 0 评论 -
Mybatis的Executor介绍
Mybatis中所有的Mapper语句的执行都是通过Executor进行的,Executor是Mybatis的一个核心接口,其定义如下。从其定义的接口方法我们可以看出,对应的增删改语句是通过Executor接口的update方法进行的,查询是通过query方法进行的。虽然Executor接口的实现类有BaseExecutor和CachingExecutor,而BaseExecutor的子类又...转载 2018-10-09 17:07:03 · 1000 阅读 · 0 评论 -
《深入理解mybatis原理》 Mybatis初始化机制详解
对于任何框架而言,在使用前都要进行一系列的初始化,MyBatis也不例外。本章将通过以下几点详细介绍MyBatis的初始化过程。 1.MyBatis的初始化做了什么 2. MyBatis基于XML配置文件创建Configuration对象的过程 3. 手动加载XML配置文件创建Configuration对象完成初始化,创建并使用SqlSessionFactory对象 ...转载 2019-01-17 17:25:19 · 434 阅读 · 0 评论 -
mybatis一级缓存二级缓存
一级缓存 Mybatis对缓存提供支持,但是在没有配置的默认情况下,它只开启一级缓存,一级缓存只是相对于同一个SqlSession而言。所以在参数和SQL完全一样的情况下,我们使用同一个SqlSession对象调用一个Mapper方法,往往只执行一次SQL,因为使用SelSession第一次查询后,MyBatis会将其放在缓存中,以后再查询的时候,如果没有声明需要刷新,并且缓存没有超时...转载 2019-01-04 09:53:36 · 106 阅读 · 0 评论 -
关于 Mybatis的 $ 和 # , 你真的知道他们的细节吗?
关于 Mybatis的 $ 和 # , 你真的知道他们的细节吗?前言在JDBC中,主要使用的是两种语句,一种是支持参数化和预编译的PrepareStatement,能够支持原生的Sql,也支持设置占位符的方式,参数化输入的参数,防止Sql注入,一种是支持原生Sql的Statement,有Sql注入的风险。在使用Mybatis进行开发过程中,隐藏了底层具体使用哪一种语句的细节,我们通过使...转载 2018-12-29 14:02:40 · 316 阅读 · 0 评论 -
@Param注解在mybatis中的使用及传入参数总结
实例一 @Param注解单一属性dao层示例Public User selectUser(@param(“userName”) String name,@param(“userpassword”) String password);xml映射对应示例<select id=" selectUser" resultMap="BaseResultMap"> se...转载 2018-10-10 18:20:07 · 650 阅读 · 0 评论 -
MyBatis @Options使用方法
MyBatis的@Options注解能够设置缓存时间,能够为对象生成自增的主键值,一般应用于两种场景,今天跟大家介绍下@Options注解如何在查询数据和插入数据时使用。场景一:首先先学习下在查询数据的情况下的应用场景。配合查询语句使用,主要是开关一些查询的选项。比如useCache = true表示将会缓存本次查询结果,以提高下次查询速度;flushCache = Options.F...转载 2018-10-10 18:05:10 · 564 阅读 · 0 评论 -
MyBatis注解开发-@Insert和@InsertProvider
@Insert和@InsertProvider都是用来在实体类的Mapper类里注解保存方法的SQL语句。不同的是,@Insert是直接配置SQL语句,而@InsertProvider则是通过SQL工厂类及对应的方法生产SQL语句,这种方法的好处在于,我们可以根据不同的需求生产出不同的SQL,适用性更好。1、项目主要结构:(1)项目中的实体类(2)每个实体类对应的Mapper方法(...转载 2018-10-10 18:02:05 · 4328 阅读 · 0 评论 -
Spring-AOP、Struts2拦截器、MyBatis Plugin实现原理比较(一)
大部分人看到标题一定会有这样的疑问,"为什么把这个三个看起来不相关的东西放在一起比较呀?" 其实无论是AOP、拦截器还是Plugin 都是通过对目标点,一般来说就是对函数的拦截,扩展原有的功能,增加切面逻辑(日志,权限验证),修改上下文运行数据(实现Mybatis物理分页)。 Spring-AOP是个通用的框架,通过配置可以对任意函数进行拦截Struts2是Web框架,它的拦...转载 2018-10-09 17:42:36 · 300 阅读 · 0 评论 -
由浅入深分析mybatis通过动态代理实现拦截器(插件)的原理
mybatis拦截器动态代理插件最近在用mybatis做项目,需要用到mybatis的拦截器功能,就顺便把mybatis的拦截器源码大致的看了一遍,为了温故而知新,在此就按照自己的理解由浅入深的理解一下它的设计。 和大家分享一下,不足和谬误之处欢迎交流。直接入正题。 首先,先不管mybatis的源码是怎么设计的,先假设一下自己要做一个拦截器应该怎么做。拦截器的实现都是基于代理的设计模式设计...转载 2018-10-09 16:55:42 · 197 阅读 · 0 评论 -
关于Mybatis的Batch模式性能测试及结论
近日在公司项目中,使用到spring+mybatis的架构,特对mybatis的batch模式做了相关研究,得出以下结论: 1.Mybatis内置的ExecutorType有3种,默认的是simple,该模式下它为每个语句的执行创建一个新的预处理语句,单条提交sql;而batch模式重复使用已经预处理的语句, 并且批量执行所有更新语句,显然batch性能将更优; 2.但batch模...转载 2018-09-30 11:38:36 · 1705 阅读 · 1 评论 -
MyBatis 批量插入ExecutorType.BATCH效率对比
一、在mybatis中ExecutorType的使用1.Mybatis内置的ExecutorType有3种,默认的是simple,该模式下它为每个语句的执行创建一个新的预处理语句,单条提交sql;而batch模式重复使用已经预处理的语句,并且批量执行所有更新语句,显然batch性能将更优; 2.但batch模式也有自己的问题,比如在Insert操作时,在事务没有提交之前,是没有办法...转载 2018-09-30 11:41:39 · 4629 阅读 · 3 评论 -
mybaits小插件【sql拦截器】
写了一个sql拦截器用于打印sql语句的日志package com.logext.sql.mybatis;import java.io.IOException;import java.io.InputStream;import java.io.Reader;import java.sql.Blob;import java.sql.Clob;import java.sql.NCl...原创 2019-09-03 21:10:59 · 889 阅读 · 0 评论 -
mybatis generator为实体类生成自定义注释(读取数据库字段的注释添加到实体类,不修改源码)
我们都知道mybatis generator自动生成的注释没什么实际作用,而且还增加了代码量。如果能将注释从数据库中捞取到,不仅能很大程度上增加代码的可读性,而且减少了后期手动加注释的工作量。1、首先定义注释生成插件package com.dto.channellabel; import java.text.SimpleDateFormat; import java.util.Da...原创 2018-10-11 15:20:43 · 3402 阅读 · 2 评论 -
spring中@param和mybatis中@param使用区别
1.spring中@param/** * 查询指定用户和企业关联有没有配置角色 * @param businessId memberId * @return */ int selectRoleCount(@Param("businessId") Integer businessId,@Param("memberId") Long memberId);2.mybatis...转载 2018-10-11 10:22:12 · 245 阅读 · 0 评论 -
mybatis的一些特殊符号标识(大于,小于,等于,不等于)
特殊字符 替代符号(红色基本为常用的) & &amp; < &lt; > &gt; " &quot; ' &apos;小于等于 a<=b ...转载 2018-11-04 15:16:00 · 5500 阅读 · 1 评论 -
MyBatis Generator Plugin插件之ToStringPlugin
一、ToStringPlugin插件简介 org.mybatis.generator.plugins.ToStringPlugin ToStringPlugin插件主要用来为KeyClass,Record Class和BlobClass提供toString方法的 二、ToStringPlugin使用 默认情况下通过MyBatis Generator生成的bean是没...转载 2018-11-05 10:27:27 · 733 阅读 · 0 评论 -
Mybatis最入门---日志配置
SLF4J Apache Commons Logging Log4j 2 Log4j JDK logging 不少应用服务器的classpath中已经包含Commons Logging,如Tomcat和WebShpere, 所以MyBatis会把它作为具体的日志实现。记住这点非常重要。这将意味着,在诸如 WebSphere的环境中——WebSphere提供了Commons Lo...转载 2018-12-27 09:50:30 · 300 阅读 · 1 评论 -
mybatis入门_配置文件的配置
一.全局配置文件配置1.1 properties标签Properties标签可以用来加载配置文件.例如,我们可以将数据库的连接信息放入到一个配置文件(db.properties中..)下为db.propertiesdb.driverClass=com.mysql.jdbc.Driverdb.url=jdbc:mysql://localhost:3306/mybatis?useU...转载 2018-12-27 09:38:02 · 179 阅读 · 0 评论 -
java利用map降低时间复杂度@mapkey
最近做了一个项目,因为涉及多个表,所以有大量的list,就产生了大量的for循环。这样的话时间复杂度就蹭蹭蹭的上去了。两个for循环的嵌套的时间复杂度就是n的平方了。需求:现在需要查出来两个结果list,list1和list2,然后list中分别存储了各自的对象,对象中的channelid做比较,如果相同,就做进一步的操作。但是这样的话问题就出现了,两个for循环,算法的时间复杂度为n的平方。...原创 2018-11-29 11:24:47 · 1563 阅读 · 1 评论 -
mybatis中collection的使用(三级联动)
mybatis中association和collection的column传入多个参数值项目中在使用association和collection实现一对一和一对多关系时需要对关系中结果集进行筛选,如果使用懒加载模式,即联合使用select标签时,主sql和关系映射里的sql是分开的,查询参数传递成为问题。mybatis文档:property description colum...原创 2018-11-29 10:57:31 · 2994 阅读 · 0 评论 -
mybatis collection和association 传多个参数
mybatis3.0版本以上,才可以<resultMap type="CaseVO" id="processInfoList"><id column="TEMPLATE_ID" property="taskTemplate.templateId" /><result column="TEMPLATE_NAME" property=转载 2018-11-21 16:12:47 · 466 阅读 · 0 评论 -
[MyBatis]-resultMap结果映射集详解
resultMap结果映射集详解resultmap是mybatis中最复杂的元素之一,它描述如何从结果集中加载对象,主要作用是定义映射规则、级联的更新、定制类型转化器。resultmap构成元素元素 子元素 作用 constructor idArg 、arg 用于配置构造器方法 id 将结果集标记为id,以方便全局调用 resul...转载 2018-11-21 16:04:53 · 745 阅读 · 0 评论 -
mybatis常用jdbcType数据类型以及对应的JavaType
1、MyBatis 通过包含的jdbcType类型BIT、FLOAT、CHAR 、TIMESTAMP 、 OTHER 、UNDEFINEDTINYINT 、REAL 、VARCHAR 、BINARY 、BLOB NVARCHAR、SMALLINT 、DOUBLE 、LONGVARCHAR 、VARBINARY 、CLOB、NCHAR、INTEGER、 NUMERIC、DATE 、LONGVAR...转载 2018-11-21 16:05:10 · 382 阅读 · 0 评论 -
mybatis bind 标签
bind 标签可以使用 OGNL 表达式创建一个变量井将其绑定到上下文中。在前面的例子中, UserMapper.xml 有一个 selectByUser 方法,这个方法用到了 like 查询条件,部分代码如下 。<if test=” userName != null and userName ! = ””>and username like concat ( ’ 毛 ...转载 2018-11-05 14:17:22 · 485 阅读 · 0 评论 -
mybatis test标签判断值是否相等
mybatis可以很方便生成动态sql,常用的方式如下: <if test="id != null and id !=''"> and id != #{id} </if> 但是在实际使用过程中可能会需要对某个输入的值做具体判断,然后根据输入参数的值进行分支处理<select id="xxx...转载 2018-11-05 11:21:32 · 1310 阅读 · 0 评论 -
eclipse利用mybatis-generator生成代码
由于mybatis是半自动的ORM框架,表到POJO的映射可以由mybatis-generator完成,映射文件也可以由它生成,下面介绍生成步骤:新建maven项目:File-》Others-》Maven->Maven Projectpom.xml文件中添加插件代码: <plugin> <groupId>org....原创 2018-10-11 15:00:07 · 716 阅读 · 0 评论