Java EE开发平台随手记3——Mybatis扩展2
2016-05-31 22:29
537 查看
忙里偷闲,继续上周的话题,记录Mybatis的扩展。
扩展5:设置默认的返回结果类型
大家知道,在Mybatis的sql-mapper配置文件中,我们需要给<select>元素添加resultType或resultMap属性,这两个属性有且只能有一个。2013年我在做一个系统的时候,因为业务关系,查询出的结果集字段经常变化,为了简化处理,采用map作为返回数据的载体,然后不得不在绝大多数<select>元素上添加类似 resultType='java.util.HashMap'(Mybatis有HashMap的简写形式,这里为了更清晰,使用全限定符),于是催生了一个想法,能不能设置默认的返回结果类型?后面经过调试,继承SqlSessionFactoryBean添加如下代码实现:
View Code
说完了调用存储过程的用法,回过头来简单的提一下调用存储过程的实现:实际上很简单,只要添加一个Mybatis的拦截器即可,拦截结果处理接口ResultSetHandler的方法handleOutputParameters,然后将返回结果和输出参数包装到一个Map对象中即可,具体代码就不贴了。
时间关系,今天写到这里。下次再继续写Dao接口中SqlID的重定向、IDaoTemplate接口中的批量处理相关的扩展。
扩展5:设置默认的返回结果类型
大家知道,在Mybatis的sql-mapper配置文件中,我们需要给<select>元素添加resultType或resultMap属性,这两个属性有且只能有一个。2013年我在做一个系统的时候,因为业务关系,查询出的结果集字段经常变化,为了简化处理,采用map作为返回数据的载体,然后不得不在绝大多数<select>元素上添加类似 resultType='java.util.HashMap'(Mybatis有HashMap的简写形式,这里为了更清晰,使用全限定符),于是催生了一个想法,能不能设置默认的返回结果类型?后面经过调试,继承SqlSessionFactoryBean添加如下代码实现:
@Repository interface ICallDao { public ICallResult call(@Param("input")String input); } @Service public class ICallDaoTest { @Autowired private ICallDao dao; @Test public void call() throws Exception { ICallResult rs = dao.call("1"); //直接访问返回结果和输出参数 Object returnValue = rs.getResult(); Object output1 = rs.getOutputParam("output1"); List<Object> rs1 = rs.getOutputParam("rs1"); //循环访问输出参数 Iterator<String> i = rs.iterator(); String name = ""; while(i.hasNext()){ name = i.next(); System.out.println(name + "============" + rs.getOutputParam(name)); } } }
View Code
说完了调用存储过程的用法,回过头来简单的提一下调用存储过程的实现:实际上很简单,只要添加一个Mybatis的拦截器即可,拦截结果处理接口ResultSetHandler的方法handleOutputParameters,然后将返回结果和输出参数包装到一个Map对象中即可,具体代码就不贴了。
时间关系,今天写到这里。下次再继续写Dao接口中SqlID的重定向、IDaoTemplate接口中的批量处理相关的扩展。
相关文章推荐
- Java之多线程
- Spring AOP 最终版实现
- Java对象的序列化
- ajax跨域请求简单实现Java后台
- 开发 JAVA 的准备
- java 基础类库(IO,集合类,线程)
- Java ClassLoader 原理详细分析
- #VSTS日志# Xamarin构建支持和一大波更新
- Java8新特性 1——利用流和Lambda操作集合
- 手机蓝牙传输图片很邪恶的一个点
- 【Java】从源码分析动态代理机制
- 南邮java实验一—综合图形界面程序设计
- spring基于@ExceptionHandler的异常处理
- Java Code Examples for java.net.Authenticator
- Spring04
- 在Java中使用Highcharts+Ajax+Json生成动态饼图
- 【Java基础一】String创建对象"" && null
- Retrofit结合RxJava的一次实践
- java依赖注入的学习
- [疯狂Java]集合:IdentityHashMap、EnumMap