分类:
Java
mybatis
标签:
mybatis
sqlSessionFactory
mapperLocations
classpath
用过mybatis的人都知道sqlSessionFactory中mapperLocations是用来配置mapper xml文件目录的,通常我们会这么配置classpath*:/com/cangzhitao/**/*Mapper.xml,这表示从classpath com/cangzhitao目录及其子目录下所有以Mapper.xml结尾的文件。cangzhitao后面的**就是表示任意多级目录,而classpath后面的*是什么意思呢?
笔者网上查找资料,发现很多文章都说classpath后面的*表示启用通配符,笔者实际测试,并非如此。笔者开始并没有加*,后面的通配符依然能起作用,并不像网上说的报错,不过也可能是因为版本不同的原因造成的,这里笔者的mybatis版本是3.4.4。笔者的项目是分了多个工程,mapper.xml文件分布在几个工程中,笔者在没有加*的时候,测试发现mybatis只能找到一个工程中的mapper.xml文件,而加上*,所有工程下面的mapper.xml文件就都能找到了,所以如果你也存在笔者这种情况,那么请你在classpath后面加
......
分类:
Java
框架
mybatis
标签:
mybatis
mapper
Interceptor
框架搭建
1、前言
最近新搭建一个框架,以前用过mybatis,这次第一次自己搭建基于mybatis的框架,架构基本上沿袭以前hibernate的套路,说到这,笔者对两者的观念基本还是停留在hibernate自动生成SQL,mybatis需要自己写SQL,mybatis自己写SQL开发起来麻烦,但SQL语句写起来灵活,容易实现功能,性能也更容易优化,而hibernate其实大部分情况下性能也够用,优化起来确实需要一定功底,在hibernate有时不容易实现的功能,笔者实际上会结合jdbcTemplate一起使用,所以一直使用hibernate也没发现什么问题。这次选用mybatis,其实主要是一次尝试。
2、概述
所有的实体都必须实现Entity接口;
所有的Mapper都必须继承BaseMapper,BaseMapper是一个泛型类,有两个泛型参数,一个是该Mapper操作的实体类型,另一个是序列化id类型,BaseMapper里面定义了通用的Mapper接口;
所有的DAO接口都继承于IBaseDA
......
分类:
Java
标签:
mybatis
分页
PageHelper
statementType
STATEMENT
预编译
非预编译
intercepts
拦截器
动态sql
动态表名
动态字段名
PageHelper是一个很方便的mybatis的分页组件,如果你正在使用mybatis,建议尝试使用PageHelper进行分页。PageHelper是使用mybatis的拦截器intercepts实现分页操作的。
但PageHelper并不支持STATEMENT非预编译的SQL的分页,笔者调试时观察了一下,应该是由于SQL里面的分页参数使用的?,PageHelper修改SQL的时候无法将参数正确设置,所以导致了语法错误,mybatis使用的很少,笔者也不知道这个问题是不是一个问题,能否解决,如果有读者也遇到该问题,请暂时想别的办法吧。
其实笔者之所以使用STATEMENT非预编译的SQL,是想实现一个通用的Mapper,动态传入表名和字段名,查看网上资料都表明需要设置statementType="STATEMENT",所以出现了上面的问题,但后来笔者实验发现,动态sql并不需要强制设置statementType="STATEMENT",在默认预编译环境下运行,笔者测试暂时未发现有什么问题,笔者自己
......