ibtais和plsql使用注意事项

ibtais和plsql连接oracle数据库使用sql查询简介:

daoImpl实现类代码:

 
 
  1. public List<ImageRecord> queryImgRecord(ImageRecord imageRecord, int start,
  2. int end,String orderBy,String orderType) {
  3. //把数据封装到map里面去,key值必须和xml文件里面的parameterMap的属性值相匹配。
  4. Map map = new HashMap<Object, Object>();
  5. map.put("policyNo", imageRecord.getPolicyNo());
  6. map.put("contractNo", imageRecord.getContractNo());
  7. map.put("hasCreateTif", imageRecord.getHasCreateTif());
  8. map.put("updateName", imageRecord.getUpdateName());
  9. map.put("start", start);
  10. map.put("end", end);
  11. //使用map作为参数传递进去
  12. List<ImageRecord> list = getSqlMapClientTemplate().queryForList(
  13. "APP_IMG_RECORD.queryImgRecord", map);
  14. return list;
  15. }

xml文件sql编写:

属性简介和注意事项:
  1. id:关联实现方法名,resultMap:返回的model类类型。关联定义好的resultMap的id

  2. parameterClass:参数的类型这里指向model类。可以使其他类型比如String(和查询的表app_img_record保持一致)。

  3. 使用#符号是指匹配字段类型,类型与定义好的resultMap定义的一致。使用$符号不匹配字段类型。

  4. 有特殊符号就使用包括起来比如使用大于等于号之类的。

  5. like查询使用%$$%来包括字段。使用$符号不匹配字段类型如果是字符类型需要加上''来包括。

  6. 定义的resultMap返回值类型,指向具体的model类。column指数据库字段,property指model字段,jdbcType指数据类型。

  7. 分页问题:(plsql没有分页函数只能使用rownum关键字(必须起别名不然plsql不认)进行查询所有行数,再用行数来决定显示哪些东西,要使用别名)

  8. 排序的话尽量在声明实体类属性名的时候和数据库字段名保持一致。封装map参数的时候和设置parameterMap参数必须保持一致尽量与数据库一致。传参可能会有问题比如排序的时候字段匹配不上。

比如:

 
 
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd" >
  3. <sqlMap namespace="APP_IMG_RECORD" >
  4. <resultMap id="BaseResultMap" class="com.ifp.bizsupport.common.model.exhibition.ImageRecord">
  5. <result column="ID" property="id" jdbcType="VARCHAR" />
  6. <result column="HAS_CREATE_TIF" property="hasCreateTif" jdbcType="VARCHAR" />
  7. <result column="HAS_IS_AUTO" property="hasIsAuto" jdbcType="VARCHAR" />
  8. <result column="UPDATE_TIME" property="updateTime" jdbcType="DATE" />
  9. <result column="UPDATE_NAME" property="updateName" jdbcType="VARCHAR" />
  10. <result column="INSERT_TIME" property="insertTime" jdbcType="DATE" />
  11. <result column="UPLOAD_NUM" property="uploadNum" jdbcType="NUMBER" />
  12. <result column="CREATE_NUM" property="createNum" jdbcType="NUMBER" />
  13. <result column="POLICY_STATUS" property="policyStatus" jdbcType="NUMBER" />
  14. <result column="POLICY_ID" property="policyId" jdbcType="VARCHAR" />
  15. <result column="POLICY_NO" property="policyNo" jdbcType="VARCHAR" />
  16. <result column="CONTRACT_NO" property="contractNo" jdbcType="VARCHAR" />
  17. <result column="POLICY_TYPE" property="policyType" jdbcType="VARCHAR" />
  18. <result column="BY1" property="by1" jdbcType="VARCHAR" />
  19. <result column="BY2" property="by2" jdbcType="VARCHAR" />
  20. <result column="BY3" property="by3" jdbcType="VARCHAR" />
  21. <result column="BY4" property="by3" jdbcType="VARCHAR" />
  22. <result column="BY5" property="by3" jdbcType="VARCHAR" />
  23. </resultMap>
  24. <!-- resultMap里的字段 -->
  25. <sql id="Base_Column_List" >
  26. ID, HAS_CREATE_TIF, HAS_IS_AUTO, UPDATE_TIME, UPDATE_NAME, INSERT_TIME,
  27. UPLOAD_NUM, CREATE_NUM, POLICY_STATUS, POLICY_ID, POLICY_NO, CONTRACT_NO, POLICY_TYPE,
  28. BY1, BY2, BY3, BY4, BY5
  29. </sql>
  30. <parameterMap class="java.util.HashMap" id="parameterMap1">
  31. <parameter property="policyNo"/>
  32. <parameter property="contractNo"/>
  33. <parameter property="hasCreateTif"/>
  34. <parameter property="updateName"/>
  35. <parameter property="start"/>
  36. <parameter property="end"/>
  37. <parameter property="orderBy"/>
  38. <parameter property="orderType"/>
  39. </parameterMap>
  40. <!-- 查询影像件列表 -->
  41. <select id="queryImgRecord" resultMap="BaseResultMap" parameterClass="java.util.HashMap" >
  42. select * from
  43. (select rownum r, a.* from app_img_record a where 1=1) b
  44. where POLICY_NO like '%$policyNo$%'
  45. <isNotNull property="contractNo">
  46. and CONTRACT_NO like '%$contractNo$%'
  47. </isNotNull>
  48. <isNotNull property="hasCreateTif">
  49. and HAS_CREATE_TIF like '%$hasCreateTif$%'
  50. </isNotNull>
  51. <isNotNull property="updateName">
  52. and UPDATE_NAME like '%$updateName$%'
  53. </isNotNull>
  54. <![CDATA[
  55. and (r >= #start:NUMBER# and r <= #end:NUMBER#)
  56. ]]>
  57. <!--
  58. <isNotNull property="orderBy">
  59. order by $orderBy$ $orderType$
  60. </isNotNull>
  61. -->
  62. </select>

也可以使用在程序里面拼接sql语句在xml文件里面执行的方式。

 
 
  1. java 程序:
  2. String sql = "select "
  3. + " policy_agent_code, "
  4. + " policy_agent_name, "
  5. + " job_level, "
  6. + " policy_no, "
  7. + " main_product_name, "
  8. + " policy_sts, "
  9. + " premium "
  10. + " from v_gx_month_policy_info_new "
  11. + " where policy_agent_code = '" + agentCode + "'";
  12. List<Map> list = getSqlMapClientTemplate().queryForList(
  13. "PAD_GROUP_GX.queryPolicyInfoByMonth", sql);
  14. xml执行文件:
  15. <select id="queryPolicyInfoByMonth" parameterClass="java.lang.String"
  16. resultClass="java.util.HashMap">
  17. $sql$
  18. </select>

猜你喜欢

转载自blog.csdn.net/weixin_39513166/article/details/78695192