摘要:typeAliasesPackage 默认只能扫描某一个路径下,或以逗号等分割的 几个路径下的内容,不支持通配符和正则,采用重写的方式解决[html] view plain copy print?package com.xxxx.xxx.util.common; import com.xxxx.xxx.util.LogUtil; import org.apache.common...
阅读全文
随笔分类 - MyBatis
摘要:Mybatis拦截器只能拦截四类对象,分别为:Executor、ParameterHandler、StatementHandler、ResultSetHandler,而SQL数据库的操作都是从Executor开始,因此要记录Mybatis数据库操作的耗时,需要拦截Executor类,代码实现如下:/** * 数据库操作性能拦截器,记录耗时 * @Intercepts定义Signature数...
阅读全文
摘要:MyBatis拦截器介绍MyBatis提供了一种插件(plugin)的功能,虽然叫做插件,但其实这是拦截器功能。那么拦截器拦截MyBatis中的哪些内容呢?我们进入官网看一看:MyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis 允许使用插件来拦截的方法调用包括:Executor (update, query, flushStatements, commit...
阅读全文
摘要:转载自:http://my.oschina.net/SEyanlei/blog/188919 mybatis提供了EnumTypeHandler和EnumOrdinalTypeHandler完成枚举类型的转换,两者的功能已经基本满足了日常的使用。但是可能有这样的需求:由于某种原因,我们不想使用枚举的name和ordinal作为数据存储字段。mybatis的自定义转换类出现了。...
阅读全文
摘要:一、简介 我们在用MyBatis里,很多时间有这样一个需求:bean里有个属性是枚举,在DB存储时我们想存的枚举的代号,从DB拿出来时想直接映射成目标枚举类型,也即代号字段与Java枚举类的相互类型转换。 当然,你可以为每个枚举写一个MyEnumTypeHandler,但问题是要为每个类都写一个TypeHandler,过于繁琐。 有了泛型,一个通用的TypeHandler直接搞定。二、源码源...
阅读全文
摘要:引言typeHandlers阅读官方文档 typeHandlers 一节 {:target="_blank"}MyBatis 在预处理语句(PreparedStatement)中设置一个参数时,Java对象将通过ps.setInt、ps.setString、ps.setTimeStamp等方法转换成数据库需要的数据在从结果集(ResultSet)中取出一个值时,将使用rs.getInt、rs.ge...
阅读全文
摘要:平时咱们写程序实体类内或多或少都会有枚举类型属性,方便嘛。但是mybatis里怎么处理他们的增删改查呢?要求:插入的时候,会用枚举的定义插入数据库,我们希望在数据库中看到的是数字或者其他东西;查询的时候,数据库的值可以自动转换为我们对应的枚举值。举例,我有一个这样的枚举类型:Java Code复制内容到剪贴板package cn.com.shuyangyang.domain; public ...
阅读全文
摘要:在运行mybatis配置文件的时候,出现错误: mybatis:"configuration" must match "(properties?,settings?,typeAliase..... 配置文件 configuration 中的元素,不但有类型限制,也有顺序限制。必须按照以下配置顺序配置
阅读全文
摘要:今天和大家分享下mybatis的一个分页插件PageHelper,在讲解PageHelper之前我们需要先了解下mybatis的插件原理。PageHelper的官方网站:https://github.com/pagehelper/Mybatis-PageHelper一、Plugin接口mybatis定义了一个插件接口org.apache.ibatis.plugin.Interceptor,任何自定...
阅读全文
摘要:之前的文章中我们意见分析了一级缓存、二级缓存的相关源码和基本原理,今天我们来分享下了mybatis二级缓存和redis的结合,当然mybatis二级缓存也可以和ehcache、memcache、OSCache、Hazelcast结合使用。二级缓存相关的源码分享请参考《Mybatis源码分析之Cache二级缓存原理》。我们通过两种方式来实战,一种是自己编写缓存、另外一种是官方给出的demo地址:h...
阅读全文
摘要:一:Cache类的介绍讲解缓存之前我们需要先了解一下Cache接口以及实现MyBatis定义了一个org.apache.ibatis.cache.Cache接口作为其Cache提供者的SPI(ServiceProvider Interface) ,所有的MyBatis内部的Cache缓存,都应该实现这一接口Cache的实现类中,Cache有不同的功能,每个功能独立,互不影响,则对于不同的Cache...
阅读全文
摘要:之前的文章我已经基本讲解到了SqlSessionFactory、SqlSession、Excutor以及Mpper执行SQL过程,下面我来了解下myabtis的缓存,它的缓存分为一级缓存和二级缓存,本文我们主要分析下一级缓存。先看一个例子,代码还是之前(第一篇)的的demo public static void main(String[] args) throws Exception { ...
阅读全文
摘要:上两篇已经讲解了SqlSessionFactory的创建和SqlSession创建过程。今天我们来分析myabtis的sql是如何一步一步走到Excutor。还是之前的demo public static void main(String[] args) throws Exception { SqlSessionFactory sessionFactory = null; ...
阅读全文
摘要:通过上一篇文章的分析我们,我初步了解了它是如何创建sessionFactory的(地址:Mybatis源码分析之SqlSessionFactory(一)),今天我们分析下Mybatis如何创建SqlSession( sessionFactory.openSession())和Excutor到底做了什么事情还是上篇的代码demo public static void main(String[] a...
阅读全文
摘要:简介MyBatis的前身叫iBatis,本是apache的一个开源项目, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis。MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和...
阅读全文
摘要:随着系统用户访问量的不断增加,数据库的频繁访问将成为我们系统的一大瓶颈之一。由于项目前期用户量不大,我们实现单一的数据库就能完成。但是后期单一的数据库根本无法支撑庞大的项目去访问数据库,那么如何解决这个问题呢?实际的应用中,数据库都是读多写少(读取数据的频率高,更新数据的频率相对较少),而读取数据通常耗时比较长,占用数据库服务器的CPU较多,从而影响用户体验。我们通常的做法就是把查询从主库中抽取出...
阅读全文
摘要:延迟加载什么是延迟加载?resultMap可以实现高级映射(使用association、collection实现一对一及一对多映射),association、collection具备延迟加载功能。 需求: 如果查询订单并且关联查询用户信息。如果先查询订单信息即可满足要求,当我们需要查询用户信息时再查询用户信息。把对用户信息的按需去查询就是延迟加载。延迟加载:先从单表查询、需要时再从关联表去关联...
阅读全文
摘要:Mybatis 高级知识安排:对订单商品数据模型进行分析订单商品数据模型数据模型分析思路:1、每张表记录的数据内容(分模块对每张表记录的内容进行熟悉,相当于学习系统需求的过程)2、每张表重要的的字段设置(非空字段、外键字段)3、数据库级别表与表之间的关系(外键关系)4、表与表业务之间的关系(要建立在每个业务意义的基础上去分析)数据模型分析模型用户表 user:记录购买商品的用户信息订单表 orde...
阅读全文
摘要:Mybatis 解决 jdbc 编程的问题1、 数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问题。解决:在SqlMapConfig.xml中配置数据链接池,使用连接池管理数据库链接。2、 Sql语句写在代码中造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变Java代码。解决:将Sql语句配置在XXXXmapper.xml文件中与jav...
阅读全文
摘要:MybatisMybatis 和 SpringMVC 通过订单商品案例驱动官方中文地址:http://www.mybatis.org/mybatis-3/zh/官方托管地址:https://github.com/mybatis/mybatis-3本项目全部代码地址:https://github.com/zhisheng17/mybatis基础知识:对原生态 jdbc 程序(单独使用 jdbc 开发...
阅读全文