ibatis一对多数据库如何实现

数据库   发布日期:2023年06月19日   浏览次数:404

这篇文章主要介绍了ibatis一对多数据库如何实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇ibatis一对多数据库如何实现文章都会有所收获,下面我们一起来看看吧。

  1. iBatis的多表关联。
  2. ibatis的表关联,和数据库语句无关,是在Java程序中,把若干语句的结果关联到一起。
  3. 这种关联形式,虽然在大数据量时是很奢侈的行为,但是看起来很干净,用起来也很方便。这里用表lockkey为例,一个lock可以配多个key
  4. CREATETABLE lock(
  5. id int,
  6. lockName varchar
  7. );
  8. CREATETABLEkey(
  9. id int,
  10. lockId int,
  11. keyName varchar
  12. );定义映射类
  13. package zzcv.dao.domain;
  14. publicclass Lock
  15. {
  16. privateint id;
  17. private String lockName;
  18. private List<Key> keys = new ArrayList<Key>();
  19. publicvoid getId(){
  20. return..
  21. ...
  22. //省略
  23. }
  24. package zzcv.dao.domain;
  25. publicclass Key
  26. {
  27. privateint id;
  28. private String keyName;
  29. private Lock lock; ...
  30. //省略
  31. }表关联通过配置文件的resultMap实现,不需要关联的查询仍可用resultClass
  32. <sqlMap namespace="test">
  33. <typeAlias alias="Key"="zzcv.dao.domain.Key"/>
  34. <typeAlias alias="Lock"="zzcv.dao.domain.Lock"/>
  35. <resultMap id="KeyResult"="Key">
  36. <result property="id"="id"/>
  37. <result property="keyName"="keyName"/>
  38. <result property="lock"="lockId"="getLockById"/>
  39. </resultMap>
  40. <!---->
  41. <resultMap id="LockResult"="Lock">
  42. <result property="id"="id"/>
  43. <result property="lockName"="lockName"/>
  44. <result property="keys"="id"="getKeysByLockId"/>
  45. </resultMap>
  46. <!---->
  47. <!---->
  48. <select id="selectAllkeys"="KeyResult">
  49. <![CDATA[
  50. select id,lockId,keyName from key
  51. ]]>
  52. </select>
  53. <select id="getLockById"="int"="Lock">
  54. <![CDATA[
  55. select id,lockName from lock where id = #value#
  56. ]]>
  57. </select>
  58. <select id="selectAllLocks"="LockResult">
  59. <![CDATA[
  60. select id,lockName from lock
  61. ]]>
  62. </select>
  63. <select id="getKeyByLockId"="int"="key">
  64. <![CDATA[
  65. select id,lockId,keyName from lock where lockId = #value#
  66. ]]>
  67. </select>
  68. </sqlMap> 现在可以代码中使用了
  69. ...
  70. ..
  71. try{
  72. Reader reader ="mxd/dao/data/SqlMapConfig.xml");
  73. sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);
  74. reader.close(); }
  75. catch(IOException e){
  76. thrownew"Something bad happened while building the SqlMapClient instance."+ e, e);}
  77. List locks=sqlMapper.queryForList("selectAllLocks");
  78. //取一个Lock对象。
  79. =(Lock)locks.get(0);
  80. //从Lock对象取List<Key>。
  81. =lock.getKeys();
  82. //示例结束,取到结果了,剩余的一个关联是取对象Lock,其余操作差不多,就不写出了。
  83. ...

以上就是ibatis一对多数据库如何实现的详细内容,更多关于ibatis一对多数据库如何实现的资料请关注九品源码其它相关文章!