zoukankan      html  css  js  c++  java
  • iBATIS入门程序六大步详解(转)

    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. }
  • 相关阅读:
    京东POP2020新店新规
    hdu 1203
    hdu 1513
    有关Canvas的一点小事—canvas数据和像素点
    有关Canvas的一点小事—图像绘制
    有关Canvas的一点小事--鼠标绘图
    Javascript和jquery事件--键盘事件KeyboardEvent
    [转]DOM0,DOM2,DOM3事件处理方式区别
    Javascript和jquery事件--鼠标事件的小结
    Javascript和jquery事件--鼠标移动事件mousemove
  • 原文地址:https://www.cnblogs.com/haoxin963/p/2651014.html
Copyright © 2011-2022 走看看