MyBatis增强工具pndao-帮你自动写SQL
来源:互联网 发布:家用路由器 知乎 编辑:程序博客网 时间:2024/06/05 23:00
起因
作为Java后端开发,写DAO是个日常的不能再日常的工作。
这方面有很多工具,有重量级的Hibernate,轻量级的DbUtils、Spring JDBC等。其中MyBatis以接口声明来生成DAO,实现了接口与实现分离,并约定POJO来作为实体类,同时提供一些便捷的脚本扩展,是一套规范性和灵活性并存的方案,已经成为很多团队的首选。我用过很久MyBatis(iBatis),其实它从最开始到现在已经有不小的进步,但是仍然会被大量的复制字段、SQL拼写错误、记不得一些繁琐的语法困扰。
相信很多人都基于MyBatis写过daogen,MyBatis也提供了官方的插件MyBatis Generator,但是这些工具都是一次性生成DAO以及SQL,后期维护成本依然比较高,每次增减字段都需要手动改,如果有手写的SQL还要手动DIFF,也比较麻烦。
有一些新的框架,例如jFinal,其实已经集成了常用SQL生成这样的功能,但是一般会绑定自己的框架,使用成本比较高,迁移也很困难。
目前使用的这个版本的daogen支持MyBatis,并且能生成常用SQL,并且每次编译都会重新生成SQL,不仅省去一次性编码,也解决了维护的问题。经过一年的使用,基本上常用功能都已经能够覆盖。都是吃自己狗粮出来的,专为解决问题而生,没有半点花架子。
原理
pndao的原理并不复杂,是基于MyBatis的方法命名约定来生成SQL,并且写入MyBatis需要的XML。
写之前会判断是否已经存在XML或者注解,如果已经存在则略过此方法,所以无论是注解还是XML方式配置SQL都是兼容的。
有一点不同的是,这个是基于jsr269的编译期注解处理来实现的,所以其实整个方案跟MyBatis并没有强绑定,基于这种思路还可以做出其他很多有用的东西来。
以下是一个常见的DAO功能:
public
class
UserDaoTest
extends
AbstractTest{
public
static
final
int
USER_ID =
1
;
@Autowired
private
UserDao userDao;
@Test
public
void
testInsertUser()
throws
Exception {
User user = initUser();
assertThat(userDao.insert(user)).isEqualTo(
1
);
}
@Test
public
void
testFindUserById()
throws
Exception {
User user = userDao.findById(USER_ID);
assertThat(user).isNotNull();
}
@Test
public
void
testUpdateUserName()
throws
Exception {
assertThat(userDao.updateForUserName(
"用户13700000001"
,USER_ID)).isEqualTo(
1
);
}
}
基于pndao,所有需要开发的DAO只有这些:
@DaoGen
public
interface
UserDao {
int
updateForUserName(
@Param
(
"userName"
) String userName,
@Param
(
"id"
)
int
id);
int
insert(User t);
User findById(
int
id);
}
结合建表语句生成插件pngen,大部分场景只需编写一个模型类即可完成DAO层工作。
更多面试题请狠狠的点击 下载
- MyBatis增强工具pndao-帮你自动写SQL
- MyBatis增强工具pndao-帮你自动写SQL
- MyBatis增强工具pndao-帮你自动写SQL
- App安全增强——我来帮你写C++
- [SQL]不要让SQLServer帮你自动转换SQL命令中的数据类型
- [SQL]不要让SQLServer帮你自动转换SQL命令中的数据类型
- [SQL]不要让SQLServer帮你自动转换SQL命令中的数据类型
- [SQL]不要让SQLServer帮你自动转换SQL命令中的数据类型
- Mybatis逆向工程 MyBatis-CMEU 让你忘记MyBatis的Mapper怎么写的工具
- 用adox实现直接连数据库帮你完成写sql的任务
- mybatis自动生成dao pojo xml文件工具(SQL server)
- 用Emacs Wiki帮你写Blog
- 记忆不好?我来帮你增强记忆!
- 让大蛇(Python)帮你找工作 之增强版
- myBatis自动生成工具
- mybatis自动生成工具
- Mybatis自动生成工具
- mybatis自动生成工具
- WebView常见漏洞
- 使用OkHttp
- IOS的IPV6测试
- 动态规划-请编写一个高效算法,判断C串是否由A和B交错组成。
- HDOJ 1026 Ignatius and the Princess I (BFS+优先队列+记录路径)
- MyBatis增强工具pndao-帮你自动写SQL
- Hadoop全分布集群问题及配置
- java运算符
- Redis 安装
- net_device_ops的ndo_open和ndo_start_xmit函数
- 线段的重叠
- android判断APP是否在前台
- Spring学习笔记二
- IntelliJ Idea各种技巧设置笔记和错误解决