博客园  :: 首页  :: 新随笔  :: 联系 :: 管理

iBATIS入门程序六大步详解(转)

Posted on 2012-08-22 16:14  haoxin  阅读(258)  评论(0编辑  收藏  举报

iBATIS入门程序第一步:author.java

  1. package com.ibatis;
  2. publicclass Author {
  3. privateint id;
  4. private String name;
  5. publicint getId() {
  6. return id;
  7. }
  8. publicvoid setId(int id) {
  9. this.id = id;
  10. }
  11. public String getName() {
  12. return name;
  13. }
  14. publicvoid setName(String name) {
  15. this.name = name;
  16. }
  17. }

iBATIS入门程序第二步:author.xml

  1. ﹤?xml version="1.0"encoding="UTF-8" ?﹥
  2. ﹤!DOCTYPE sqlMap
  3. PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
  4. "http://www.ibatis.com/dtd/sql-map-2.dtd"﹥
  5. ﹤sqlMap namespace="Author"
  6. ﹤!--模块配置--﹥
  7. ﹤!--设置本映射文件中的别名--﹥
  8. ﹤typeAlias alias="author"type="com.ibatis.Author" /﹥
  9. ﹤!--
  10. ﹤cacheModel type="LRU"
  11. 设置缓存有效期,如果超出这个时间,则会清空缓存
  12. ﹤flushInterval hours="24"﹥﹤/flushInterval﹥
  13. 指定执行特定的statement时,清空缓存
  14. ﹤flushOnExecute statement="updateAuthor"/﹥
  15. SIZE:本cacheModel最大容纳数据对象的数量
  16. ﹤property value="1000"/﹥
  17. ﹤/cacheModel﹥
  18. 需要使用模块配置,如:﹤select resultClass="author"cacheModel="authorCache"
  19. 把记录使用cacheModel"authorCache"进行缓存,以后程序再使用statement进行数据查询,就直接
  20. 去缓存中取数据,而不是去数据库中取数据
  21. --﹥
  22. ﹤!--Statement配置--﹥
  23. ﹤select resultClass="author"
  24. ﹤![CDATA[SELECT * FROM author]]﹥
  25. ﹤/select﹥
  26. ﹤update parameterClass="author"
  27. ﹤![CDATA[UPDATE author SET WHERE ﹥
  28. ﹤/update﹥
  29. ﹤delete parameterClass="author"
  30. delete from author WHERE
  31. ﹤/delete﹥
  32. ﹤insert parameterClass="author"
  33. ﹤![CDATA[INSERT INTO author(id,name) VALUES(#id#,#name#)]]﹥
  34. ﹤/insert﹥
  35. ﹤/sqlMap﹥

iBATIS入门程序第三步:SqlMapConfig.properties

  1. driver=com.microsoft.jdbc.sqlserver.SQLServerDriver
  2. url=jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=ibatis
  3. username=sa
  4. password=sa

iBATIS入门程序第四步:SqlMapConfig.xml

  1. ﹤?xml version="1.0"encoding="UTF-8" ?﹥
  2. ﹤!DOCTYPE sqlMapConfig
  3. PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
  4. "http://www.ibatis.com/dtd/sql-map-config-2.dtd"﹥
  5. ﹤!-- Ibatis配置文件--﹥
  6. ﹤sqlMapConfig﹥
  7. ﹤!-- 加载连接数据库属性文件 --﹥
  8. ﹤properties resource="com/ibatis/SqlMapConfig.properties"/﹥
  9. ﹤!--
  10. cacheModelsEnabled:是否启动SqlMapClient的缓存机制。
  11. enhancementEnabled:是否针对POJO启用字节码增加机制以提升geter/seter的调用效用,为延迟加载带来了及大的性能提升。
  12. lazyLoadingEnabled:是否启用延迟加载机制。
  13. maxRequests:最大并大请求数。
  14. maxSessions:最大Session数,即当前最大允许的开发SqlMapClient数
  15. maxTransactions:最大并发事务数。
  16. --﹥
  17. ﹤settings
  18. cacheModelsEnabled="true"
  19. enhancementEnabled="true"
  20. lazyLoadingEnabled="true"
  21. maxRequests="32"
  22. maxSessions="10"
  23. maxTransactions="5"
  24. useStatementNamespaces="false"
  25. /﹥
  26. ﹤!-- datasource --﹥
  27. ﹤transactionManager type="JDBC"
  28. ﹤dataSource type="SIMPLE"
  29. ﹤!--JDBC驱动--﹥
  30. ﹤property name=JDBC.Driver value="${driver}"/﹥
  31. ﹤!--数据库URL--﹥
  32. ﹤property value="${url}"/﹥
  33. ﹤!--数据库用户名--﹥
  34. ﹤property value="${username}"/﹥
  35. ﹤!--数据库密码--﹥
  36. ﹤property value="${password}"/﹥
  37. ﹤!--不知道,在网站上查不出来,有时间再研究--﹥
  38. ﹤property value="true" /﹥
  39. ﹤!--数据库连接池可维持的最大容量--﹥
  40. ﹤property value="10"/﹥
  41. ﹤!--数据库连接池中允许的可挂起连接数--﹥
  42. ﹤property value="5"/﹥
  43. ﹤!--数据库连接池中,连接被某个任务所占用的最大时间--﹥
  44. ﹤property value="120000"/﹥
  45. ﹤!--当线程想从连接池中获取连接时,连接池中无可用连接,该参数设置线程所允许等待的最长时间--﹥
  46. ﹤property value="500"/﹥
  47. ﹤!--数据库连接状态检查语句--﹥
  48. ﹤property value="select 1 from author"/﹥
  49. ﹤!--是否允许检查连接状态--﹥
  50. ﹤property value="false"/﹥
  51. ﹤!--对持续连接超过设定值的连接进行检查--﹥
  52. ﹤property value="1"/﹥
  53. ﹤!--对空闲超过设定值的连接进行检查--﹥
  54. ﹤property value="1"/﹥
  55. ﹤/dataSource﹥
  56. ﹤/transactionManager﹥
  57. ﹤!--加载SqlMap文件--﹥
  58. ﹤sqlMap resource="com/ibatis/author.xml" /﹥
  59. ﹤/sqlMapConfig﹥

iBATIS入门程序第五步:

  1. package com.ibatis;
  2. import java.io.IOException;
  3. import java.io.Reader;
  4. import com.ibatis.common.resources.Resources;
  5. import com.ibatis.sqlmap.client.SqlMapClient;
  6. import com.ibatis.sqlmap.client.SqlMapClientBuilder;
  7. public class SqlMapConf {
  8. //初始化SqlMapClient
  9. private static SqlMapClient sqlmapclient;
  10. static{
  11. //定义ibatis配置文件的路径
  12. String resource="com/ibatis/SqlMapConfig.xml";
  13. try {
  14. //读取ibatis配置文件
  15. Reader reader=Resources.getResourceAsReader(resource);
  16. //通过SqlMapClientBuilder创建SqlMapClient
  17. sqlmapclient=SqlMapClientBuilder.buildSqlMapClient(reader);
  18. } catch (IOException e) {
  19. // TODO Auto-generated catch block
  20. System.out.println("找不到SqlMapConfig.xml文件~~");
  21. }
  22. }
  23. public static SqlMapClient getInstance(){
  24. //返回sqlmapclient,SqlMapClient是ibatis的核心主建,提供数据操作的基础平台
  25. return sqlmapclient;
  26. }
  27. /**
  28. * SqlMapClient的另一种创建方式
  29. * XmlSqlMapClientBuilder xmlbuilder=new XmlSqlMapClientBuilder();
  30. * SqlMapClient sqlmapclient=xmlbuilder.builderSqlMap(reader);
  31. * XmlSqlMapClientBuilder是ibatis2.0之后版本新引入的组件,用以取代1.X版本中的
  32. * XmlSqlMapBuilder,其作用就是创建SqlMapClient。
  33. */
  34. }

iBATIS入门程序第六步:

  1. package com.ibatis;
  2. import java.sql.SQLException;
  3. import java.util.List;
  4. import java.util.*;
  5. import com.ibatis.sqlmap.client.SqlMapClient;
  6. /**
  7. * ibatis的事务管理器,目前只支持三种:JDBC,JTA,EXTERNAL
  8. * JDBC:通过传统的JDBC CONNECTION.COMIT/rollback实现事务支持
  9. * JTA:使用容器提供的JTA服务实现全局事务管理
  10. * EXTERNAL:外部事务管理,如EJB中使用IBATIS,通过EJB的部署配置即可实现自动的事务管理机制
  11. * 。此时IBATIS将把所有的事务委托给外部容器进行管理
  12. */
  13. publicclass IbatisClient {
  14. privatestatic SqlMapClient sqlmapclient=SqlMapConf.getInstance();
  15. //根据主健ID修改NAME
  16. publicstaticvoid updateAuthor(int id,String name){
  17. Author author=new Author();
  18. author.setId(id);
  19. author.setName(name);
  20. try {
  21. //事务开始,用的是JDBC的事务管理
  22. sqlmapclient.startTransaction();
  23. sqlmapclient.update("updateAuthor",author);
  24. sqlmapclient.commitTransaction();
  25. } catch (SQLException e) {
  26. // TODO Auto-generated catch block
  27. e.printStackTrace();
  28. System.out.println("修改错误~~");
  29. }
  30. finally{
  31. try {
  32. sqlmapclient.endTransaction();
  33. } catch (SQLException e) {
  34. // TODO Auto-generated catch block
  35. e.printStackTrace();
  36. }
  37. }
  38. }
  39. //查询所有的记录,返回一个集合
  40. publicstatic List findAll(){
  41. List list=null;
  42. try {
  43. sqlmapclient.startTransaction();
  44. //0:设置从第几条记录开始
  45. //1:设置显示记录记录
  46. //list=sqlmapclient.queryForList("getAllAuthor",null,0,1);
  47. list=sqlmapclient.queryForList("getAllAuthor",null);
  48. sqlmapclient.commitTransaction();
  49. } catch (SQLException e) {
  50. // TODO Auto-generated catch block
  51. e.printStackTrace();
  52. System.out.println("查询错误~~");
  53. }
  54. finally{
  55. try {
  56. sqlmapclient.endTransaction();
  57. } catch (SQLException e) {
  58. // TODO Auto-generated catch block
  59. e.printStackTrace();
  60. }
  61. }
  62. return list;
  63. }
  64. //添加操作
  65. publicstaticboolean insert(int id,String name){
  66. boolean bool=false;
  67. Author author=new Author();
  68. author.setId(id);
  69. author.setName(name);
  70. try {
  71. sqlmapclient.startTransaction();
  72. sqlmapclient.insert("insertAuthor",author);
  73. bool=true;
  74. sqlmapclient.commitTransaction();
  75. } catch (SQLException e) {
  76. // TODO Auto-generated catch block
  77. bool=false;
  78. e.printStackTrace();
  79. System.out.println("添加错误~~");
  80. }
  81. finally{
  82. try {
  83. sqlmapclient.endTransaction();
  84. } catch (SQLException e) {
  85. // TODO Auto-generated catch block
  86. e.printStackTrace();
  87. }
  88. }
  89. return bool;
  90. }
  91. //删除操作
  92. publicstaticboolean delete(int id){
  93. boolean bool=false;
  94. Author author=new Author();
  95. author.setId(id);
  96. try {
  97. sqlmapclient.commitTransaction();
  98. sqlmapclient.delete("deleteAuthor",author);
  99. bool=true;
  100. sqlmapclient.startTransaction();
  101. } catch (SQLException e) {
  102. // TODO Auto-generated catch block
  103. bool=false;
  104. e.printStackTrace();
  105. System.out.println("删除错误~~");
  106. }
  107. finally{
  108. try {
  109. sqlmapclient.endTransaction();
  110. } catch (SQLException e) {
  111. // TODO Auto-generated catch block
  112. e.printStackTrace();
  113. }
  114. }
  115. return bool;
  116. }
  117. publicstaticvoid main(String str[]){
  118. //删除
  119. //boolean bool=IbatisClient.delete(3);
  120. //添加
  121. //boolean bool=IbatisClient.insert(3,"wanwu");
  122. //修改
  123. //IbatisClient.updateAuthor(3,"jj");
  124. //查询所有的记录
  125. List list=IbatisClient.findAll();
  126. Iterator iterator=list.iterator();
  127. while(iterator.hasNext()){
  128. Author author=(Author)iterator.next();
  129. System.out.println("﹥
  130. System.out.println("﹥
  131. }
  132. }
  133. }