动态Ibatis中parameterClass参数
来源:互联网 发布:零基础学算法 第3版 编辑:程序博客网 时间:2024/06/02 07:13
在项目中采用Ibatis作为访问持久层框架时,有时我们又需要启用JDBC连接来完成某种意义上的操作,而把Ibatis的开发模式更改了又不是我们的初衷,因此我们只能在已经用sqlMap.xml配置好的基础上进行参数封装。
具体参数方法如下:
/** * 预编译封装对象 * @param sqlmap * @param ps * @param sqlId * @param params * @return 绘制PreparedStatement */public static PreparedStatement getSqlParameterMap(SqlMapClientImpl sqlmap,PreparedStatement ps,String sqlId,Object params) {/**获取ibatis参数*/ParameterMapping[]paramMappSet = getParameterMapp( sqlmap, sqlId);/**反射来装配参数*/try {int index=0;for(ParameterMapping paramMapp : paramMappSet){index++;String methodName = "get"+toFirstLetterUpperCase(paramMapp.getPropertyName());Method method = params.getClass().getDeclaredMethod(methodName);Object obj = null; obj = method.invoke(params, null);putPreparedStatement(ps,index,obj ,method.getGenericReturnType());}} catch (Exception e) {new Result(Const.RS_ERROR,"","反射装配ibatais参数异常,系统错误!",(Params)params,e,log);} return ps;}/** * 获取ibatis预编译参数 * */private static ParameterMapping[] getParameterMapp(SqlMapClientImpl sqlmap,String sqlId){/**获取sqlMap.xml映射*/MappedStatement stmt = sqlmap.getMappedStatement(sqlId);/**获取指定ID的parameterClass参数*/ParameterMapping[] paramMappSet = stmt.getParameterMap().getParameterMappings();return paramMappSet;}private static void putPreparedStatement(PreparedStatement ps,int index,Object obj ,Object type) throws SQLException{/*String*/if(obj instanceof String){ps.setString(index, obj.toString());}/*Integer*/if(obj instanceof Integer){ps.setInt(index, Integer.valueOf(obj.toString()));}/*Long*/if(obj instanceof Long){ps.setLong(index, Long.valueOf(obj.toString()));}/*Double*/if(obj instanceof Double){ps.setDouble(index, Double.valueOf(obj.toString()));}/*Date*/if(obj instanceof Date){}if(obj instanceof BigDecimal){ps.setBigDecimal(index, BigDecimal.valueOf(Long.valueOf(obj.toString())));}}//** * 将手字母大写**/public static String toFirstLetterUpperCase(String strName) {if (strName == null || strName.length() < 2) {return strName;}String firstLetter = strName.substring(0, 1).toUpperCase();return firstLetter + strName.substring(1, strName.length());}
- 动态Ibatis中parameterClass参数
- ibatis中parameterClass="java.util.HashMap",使用多个参数
- ibatis中配置parameterClass="java.util.HashMap"的用法
- ibatis中配置parameterClass="java.util.HashMap"的用法
- ibatis配置文件中 parameterClass,resultClass,resultMap 表示的意思
- ibatis中resultMap和resultClass的区别 以及parameterClass 的取值
- Ibatis parameterClass与resultClass支持的Type
- ibatis中的parameterMap和parameterClass区别
- ibatis中动态SQL_update
- ibatis中动态SQL_delete
- ibatis动态参数和集合参数配置
- ibatis动态参数和集合参数配置
- 【Ibatis】(十一)、java.util.Map作为parameterClass和resultClass
- Spring iBatis Sqlmap 以及 parameterClass 和 parameterMap 的使用方法
- ibatis java.util.Map作为parameterClass和resultClass(转)
- ibatis中的parameterMap和parameterClass的应用详解
- ibatis中的resultClass,parameterClass,resultMap,resultType的使用与区别
- ibatis参数传递 sql动态拼接
- 不固定列交叉表的实现
- 疑似c++ Builder6的bug
- const 全局变量应注意的问题
- EasyFlow工作流条件设置
- Step+by+Step+为+NetBeans+7.0.x+安装Scala语言插件
- 动态Ibatis中parameterClass参数
- Android 中 Proguard 和JNI 相关
- android+内存管理
- 分页的逻辑一
- web.xml之<context-param>与<init-param>的区别与作用
- SVN回复旧的历史版本-需要svnadmin权限
- 分页的逻辑 二
- Android 中 Proguard 和JNI 相关
- SQL 计算西方一些特殊节日