您的位置:首页 > 编程语言 > Java开发

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添加如下代码实现:

@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接口中的批量处理相关的扩展。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: