博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
懒到极致:对mybatis的进一步精简
阅读量:7233 次
发布时间:2019-06-29

本文共 1600 字,大约阅读时间需要 5 分钟。

hot3.png

以前做的一个数据库管理系统类的项目中使用了mybatis,由于是快速开发模式,数据库结构经常变动,所以对于mybatis所需要的实体bean也经常要改,于是懒劲发作,不想老是改来改去,所以就弄了个通用的dao封装。

个人觉得优点在于数据字典的变动只需要修改sql文件定义,而bean和直接的增删改查的action都不需要变动,缺点也很明显,不适用有业务流程的。

核心代码如下:

// 结果集定义public class Row extends HashMap
{ /** * */ private static final long serialVersionUID = 1L; @Override public Object get(Object key) { if (super.get(key)!=null) { String oType = super.get(key).getClass().getSimpleName(); if (oType.equals("String[]")) return ((String[])super.get(key))[0]; else if (oType.equals("byte[]")) return (new String((byte[])super.get(key))); } return super.get(key); }}// 接口定义public interface DBMapper { List
select( String sqlstring ); int insert( String sqlstring ); int update( String sqlstring ); int delete( String sqlstring );}
// 模型映射
${_parameter}
${_parameter}
${_parameter}
// sql定义
select memo, #{name} as name from T_SMS_LOGS
select ifnull(EvaluationTypeID,'') as EvaluationTypeID, ifnull(AgreeCount,0) as AgreeCount, ifnull(Body,'') as Body, EvaluateTime as EvaluateTime, ifnull(DisagreeCount,0) as DisagreeCount, ifnull(Title,'') as Title from T_M_MERCHANTEVALUATIONS
select memo, #{name} as name from T_SMS_LOGS

 又弄了个定时加载的类,定时将sql刷新到内存,使用时传入sql的path,如qsite.permission.test1即可找到并执行。

这样,一旦数据结构发生变化,只需要变更sql文件,就会自动载入内存,而执行结果放入通用的map对象中,所有的增删改查的逻辑都不需要改,从此世界清静了。

转载于:https://my.oschina.net/u/568769/blog/134866

你可能感兴趣的文章
POJ 2236 Wireless Network 第一次做并查集,第一次写博客
查看>>
CSS学习2----padding/border/margin
查看>>
openstack各个组件对应介绍
查看>>
EF Code First关系规则及配置
查看>>
Linux.中断处理.入口
查看>>
Vue.js 2.x笔记:安装与起步(1)
查看>>
我的友情链接
查看>>
python操作MySQL数据库
查看>>
C++中delete和delete[]的区别
查看>>
C++调用C#库简单例程
查看>>
koan重新安装系统
查看>>
sed和gawk基础
查看>>
Linux入门之web服务(三)---httpd配置应用详解
查看>>
人工智能与智能硬件
查看>>
sql事务
查看>>
oaracle登陆账号被锁
查看>>
RHEL6解决无法使用YUM源问题 {已验证切实可行}
查看>>
机器学习练习(一)-使用jupyter notebook
查看>>
手机共享笔记本wifi免费上网
查看>>
java生成pdf报表
查看>>