MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。总的来说作为项目的数据访问层,是一个非常不错的选择。那么为什么又要重新设计一个类似的数据访问框架呢?
- 在使用mybatis的过程中,我们在写mapping映射的xml文件时,有些细节需要特别注意,比如说select类型的逗号处理。另外,每一个映射xml文件开头一般会有一个庞大的resultMap标签。
- 对应数据库每一个表,一般都会有一个xxxMapperService.java文件对应,导致项目工程里有大量的数据访问interface。
- 可以观察到,SQL语句mapping xml文件写法与freemarker框架使用的ftl语法有诸多相似的地方,为何不引入freemarker强大的动态模板替换功能呢?
- mybatis在与实体class映射过程中用到了反射,这一块有很大的优化空间,为何不引入cglib提升效率呢。
话不多说,直接上代码,目前代码托管在GitHub上,地址:https://github.com/Lydck/framework-dal.git。功能还不全,但已实现当初的大部分想法,欢迎大家加入!
框架映射文件xml定义:
<sqlMap namespace="user" dbType="oracle">
<sql id="selectUser">
<![CDATA[
select
*
from
TMS_USER
where 1=1
<#if userId??>
and USER_ID = :userId
</#if>
<#if userName??>
and user_name like '%'||:userName||'%'
</#if>
<#if age??>
and age = :age
</#if>
<#if password??>
and passwor