用Freemarker、Dom4j、cglib、Spring-jdbc设计类似MyBatis的数据访问框架带分页功能

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。总的来说作为项目的数据访问层,是一个非常不错的选择。那么为什么又要重新设计一个类似的数据访问框架呢?

  1. 在使用mybatis的过程中,我们在写mapping映射的xml文件时,有些细节需要特别注意,比如说select类型的逗号处理。另外,每一个映射xml文件开头一般会有一个庞大的resultMap标签。
  2. 对应数据库每一个表,一般都会有一个xxxMapperService.java文件对应,导致项目工程里有大量的数据访问interface。
  3. 可以观察到,SQL语句mapping xml文件写法与freemarker框架使用的ftl语法有诸多相似的地方,为何不引入freemarker强大的动态模板替换功能呢?
  4. 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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值