`
lushuaiyin
  • 浏览: 670889 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

IBatis 入门教程

 
阅读更多

第一步:创建POJO类

Java代码 收藏代码
  1. packagecom.ibatis;
  2. importjava.io.Serializable;
  3. publicclassIbatisimplementsSerializable{
  4. privatestaticfinallongserialVersionUID=4054639727225043549L;
  5. privateintid;
  6. privateStringname;
  7. privateintage;
  8. publicIbatis(){
  9. super();
  10. }
  11. publicIbatis(intid,Stringname,intage){
  12. super();
  13. this.id=id;
  14. this.name=name;
  15. this.age=age;
  16. }
  17. publicintgetId(){
  18. returnid;
  19. }
  20. publicvoidsetId(intid){
  21. this.id=id;
  22. }
  23. publicStringgetName(){
  24. returnname;
  25. }
  26. publicvoidsetName(Stringname){
  27. this.name=name;
  28. }
  29. publicintgetAge(){
  30. returnage;
  31. }
  32. publicvoidsetAge(intage){
  33. this.age=age;
  34. }
  35. publicStringtoString(){
  36. returnid+""+name+""+age;
  37. }
  38. }

第二步:创建上述POJO类的IBatis配置文件

Xml代码 收藏代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <!DOCTYPEsqlMap
  3. PUBLIC"-//iBATIS.com//DTDSQLMap2.0//EN"
  4. "http://www.ibatis.com/dtd/sql-map-2.dtd">
  5. <sqlMapnamespace="Ibatis">
  6. <typeAliasalias="ibatis"type="com.ibatis.Ibatis"/>
  7. <selectid="getIbatis"parameterClass="java.lang.String"resultClass="ibatis">
  8. selectid,name,agefromibatiswherename=#name#
  9. </select>
  10. <updateid="updateIbatis"parameterClass="ibatis">
  11. UPDATEibatisSETname=#name#,age=#age#WHEREid=#id#
  12. </update>
  13. <insertid="insertIbatis"parameterClass="ibatis">
  14. INSERTINTOibatis(id,name,age)VALUES(#id#,#name#,#age#)
  15. </insert>
  16. <deleteid="deleteIbatis"parameterClass="java.lang.String">
  17. deletefromibatiswhereid=#value#
  18. </delete>
  19. </sqlMap>

第三步:创建IBatis ORM框架的总配置文件SqlMapConfig.xml

Xml代码 收藏代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <!DOCTYPEsqlMapConfig
  3. PUBLIC"-//iBATIS.com//DTDSQLMapConfig2.0//EN"
  4. "http://www.ibatis.com/dtd/sql-map-config-2.dtd">
  5. <sqlMapConfig>
  6. <!--
  7. 1.cacheModelsEnabled是否启动sqlMapClient上的缓存机制;
  8. 2.enhancementEnabled是否针对POJO启用字节码增强机制以提升getter/setter的调用效能,
  9. 避免使用JavaReflect所带来的性能开销,同时也为LazyLoading带来了极大的性能提升;
  10. 3.errorTracingEnabled是否启用错误日志;在开发期间建议设为“true”以方便调试
  11. 4.lazyLoadingEnabled是否启动延迟加载机制
  12. 5.maxRequests最大并发请求数(Statement并发数)
  13. 5.maxTransactions最大并发事务
  14. 6.maxSessions最大Session数,即当前最大允许的并发sqlMapClient数(介于maxRequests和maxTransactions之间)
  15. 7.useStatementNamespaces是否使用Statement命名空间(为true时,需要追加命名空间)
  16. -->
  17. <settingscacheModelsEnabled="true"enhancementEnabled="true"
  18. lazyLoadingEnabled="true"errorTracingEnabled="true"maxRequests="32"
  19. maxSessions="10"maxTransactions="5"useStatementNamespaces="false"/>
  20. <!--
  21. transactionManager节点定义了ibatis的事务管理器
  22. 1.JDBC:通过传统JDBCConnection.commit/rollback实现事务支持
  23. 2.JTA:使用容器提供的JTA服务实现全局事务管理
  24. 3.EXTERNAL:外部事务管理,如EJB中使用ibatis,通过EJB的部署配置即可实现自动事务管理机制
  25. 此时ibatis将所有事务委托给外部容器管理
  26. -->
  27. <transactionManagertype="JDBC">
  28. <!--
  29. dataSource从属于transactionManager节点,用于设定ibatis运行期使用的DataSource属性
  30. type属性:dataSource节点的type属性指定了dataSource的实现类型
  31. 1.SIMPLE:
  32. SIMPLE是ibatis内置的dataSource实现,其中实现了一个简单的数据库连接池机制,对应ibatis实现类为
  33. com.ibatis.sqlmap.engine.datasource.SimpleDataSourceFactory。
  34. 2.DBCP:
  35. 基于ApacheDBCP连接池组件实现的DataSource封装,当无容器提供DataSource服务时,
  36. 建议使用该选项,对应ibatis实现类为com.ibatis.sqlmap.engine.datasource.DbcpDataSourceFactory。
  37. 3.JNDI:
  38. 使用J2EE容器提供的DataSource实现,DataSource将通过指定的JNDIName从容器中获取。
  39. 对应ibatis实现类为com.ibatis.sqlmap.engine.datasource.JndiDataSourceFactory。
  40. -->
  41. <dataSourcetype="SIMPLE">
  42. <!--JDBC驱动-->
  43. <propertyname="JDBC.Driver"value="oracle.jdbc.driver.OracleDriver"/>
  44. <!--数据库URL-->
  45. <propertyname="JDBC.ConnectionURL"value="jdbc:oracle:thin:@192.168.241.27:1521:orcl"/>
  46. <!--数据库用户名-->
  47. <propertyname="JDBC.Username"value="aaa"/>
  48. <!--数据库密码-->
  49. <propertyname="JDBC.Password"value="aaa"/>
  50. <propertyname="Pool.MaximumActiveConnections"value="10"/>
  51. <propertyname="Pool.MaximumIdleConnections"value="5"/>
  52. <propertyname="Pool.MaximumCheckoutTime"value="120000"/>
  53. <propertyname="Pool.TimeToWait"value="500"/>
  54. <propertyname="Pool.PingQuery"value="select1fromACCOUNT"/>
  55. <propertyname="Pool.PingEnabled"value="false"/>
  56. <propertyname="Pool.PingConnectionsOlderThan"value="1"/>
  57. <propertyname="Pool.PingConnectionsNotUsedFor"value="1"/>
  58. </dataSource>
  59. </transactionManager>
  60. <!--指定映射文件的位置,配置中可出现多个sqlMap节点,以指定项目内所有映射文件-->
  61. <sqlMapresource="com/ibatis/Ibatis.xml"/>
  62. </sqlMapConfig>

第四步:创建一个测试类,检验上述配置 + 类文件

Java代码 收藏代码
  1. packagecom.ibatis;
  2. importjava.io.Reader;
  3. importorg.apache.log4j.Logger;
  4. importcom.ibatis.common.resources.Resources;
  5. importcom.ibatis.sqlmap.client.SqlMapClient;
  6. importcom.ibatis.sqlmap.client.SqlMapClientBuilder;
  7. publicclassTestMain{
  8. staticLoggerlogger=Logger.getLogger(TestMain.class.getName());
  9. /**
  10. *@paramargs
  11. */
  12. publicstaticvoidmain(String[]args){
  13. Stringresource="SqlMapConfig.xml";
  14. //sqlMap系统初始化完毕,开始执行update操作
  15. try{
  16. Readerreader=Resources.getResourceAsReader(resource);
  17. SqlMapClientsqlMap=SqlMapClientBuilder.buildSqlMapClient(reader);
  18. sqlMap.startTransaction();
  19. //Ibatisibatis=newIbatis();
  20. //ibatis.setId(newInteger(1));
  21. //ibatis.setName("Erica");
  22. //ibatis.setAge(newInteger(1));
  23. //sqlMap.insert("insertIbatis",ibatis);
  24. Ibatisibatis=(Ibatis)sqlMap.queryForObject("getIbatis","Erica");
  25. System.out.println(ibatis.toString());
  26. sqlMap.commitTransaction();
  27. }catch(Exceptione){
  28. //TODO:handleexception
  29. logger.debug(e.toString());
  30. }
  31. }
  32. }


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics