动态代理--抛弃原有的调用模式

在以前做项目的时候,见许多人喜欢使用下面的这种调用sql调用方式:
SqlSession sqlSession = getSqlSession();
List<User> userList = sqlSession.selectList("com.dao.UserDao.getAllUser");
通过namespace+sql的Id来定位一个sql,这种方式其实有许多弊端:
1.如果不看sql文件你很难确定返回的类型是什么,需要的参数是什么,就不得不自己去翻mapper文件。然而,大多数情况下,xml里的sql可读性差的令人发抖,再加上xml里并不适合写注释,可读性再一步下降,调用别人的代码时不由得抱怨一句(The code is shit);许多人为了避免看代码,干脆自己从新写一个,这样一来代码复用性就下降。
2.代码与xml紧耦合,万一以后要拆分或者合并mapper文件,还要去代码里一个一个改字符串,万一漏掉一个,很难发现,而且编写的时候错误率也会大大增加;

现在Mybatis官方提倡使用一种新的Mapper接口的形式来操作数据库,像这样:
SqlSession sqlSession = getSqlSession();
UserDao userDao = sqlSession.getMapper(UserDao.class);
List<User> userList = userDao.getAllUser();
通过接口与xml文件中的sql-id保持一致,利用动态代理生成代理类(动态代理加java文章),调用相应的方法;
以接口的形式,有哪些方法,方法的信息一目了然,还能避免各种拼写错误;

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 5,857评论 0 4
  • 1.1mybatis下载 mybaits 的代码由github.com 管理,地址:https://github....
    暖熊熊阅读 887评论 0 5
  • 在react-native中可以通过在java层自定义ReactMethod(http://www.jianshu...
    0xSen阅读 2,588评论 1 10
  • 今天上午开始扫楼、分配好任务后,大家速战速决……下午在奥森公园野餐、玩游戏的
    汪熙宸阅读 191评论 0 1
  • 香奈儿:创始人Coco Chanel(原名:Gabrielle Bonheur Chanel ;中文名:加布里埃·...
    简书华阅读 334评论 0 0