Mybatis3源码分析(19)-Mapper生成过程-示例
2015-12-25 13:48
741 查看
Mybatis提供一种mapper形式的访问接口,通过定义接口,再加上简单的注解就能实现数据库操作。
下面来看这个mapper是怎么使用的。
先定义接口
然后就直接可以使用了
可以看到UserDao对象打印出来为MapperProxy,是一个代理。虽然我们没有实现UserDao接口,但Mybatis为利用JDK的动态代理为我们生成了一个。
接下来的几个章节,分析如下内容:
Mybatis是怎么读取相关的注解,并加入到Configuration中去的。
Mybatis是怎么生成UserDao的代理对象的。
Mybatis是怎么实现UserDao中的方法的。
下面来看这个mapper是怎么使用的。
先定义接口
public interface UserDao { //告诉Mybatis执行什么Sql @Select("select * from tab_user where user_id=#{USER_ID}") public List<Map<String,Object>> queryUser(Map<String,?> param); //也可以这样子设置,Mybatis会调用UserSqlProvider.getQuerySql()方法获取要执行的sql @SelectProvider( type=UserSqlProvider.class, method="getQuerySql" ) public List<Map<String,Object>> queryUser_2(Map<String,?> param); public static class UserSqlProvider { public String getQuerySql() { return "select * from tab_user where user_id=#{USER_ID}"; } } }在mybatis-config.xml配置文件中增加配置:
<mappers> <mapper resource="UserMapper.xml"/> //直接设置class,也可以设置package,让mybatis去描述 <mapper class="com.ashan.mybatis.UserDao"/> </mappers>
然后就直接可以使用了
public static void mapperTest(SqlSessionFactory sqlSessionFactory) { SqlSession sqlSession=sqlSessionFactory.openSession(); UserDao userDao=sqlSession.getMapper(UserDao.class); System.out.println(userDao); Map<String,Object> param=new HashMap<>(); param.put("USER_ID", "user_01"); System.out.println(userDao.queryUser_2(param)); System.out.println(userDao.queryUser(param)); }输出的结果为
org.apache.ibatis.binding.MapperProxy@17d99928 [{user_id=user_01, user_name=liys, cust_id=cust_01, svc_num=13800138000}] [{user_id=user_01, user_name=liys, cust_id=cust_01, svc_num=13800138000}]
可以看到UserDao对象打印出来为MapperProxy,是一个代理。虽然我们没有实现UserDao接口,但Mybatis为利用JDK的动态代理为我们生成了一个。
接下来的几个章节,分析如下内容:
Mybatis是怎么读取相关的注解,并加入到Configuration中去的。
Mybatis是怎么生成UserDao的代理对象的。
Mybatis是怎么实现UserDao中的方法的。
相关文章推荐
- jdbc中的Statement和PreparedStatement接口对象
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 从源码安装Mysql/Percona 5.5
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- SQL中的三值逻辑
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序