博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iBATIS入门程序六大步详解
阅读量:4031 次
发布时间:2019-05-24

本文共 7003 字,大约阅读时间需要 23 分钟。

iBATIS入门程序六大步详解

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

package com.ibatis;

public class Author {

    private int id;

    private String name;

    public int getId() {

       return id;

    }

    public void setId(int id) {

       this.id = id;

    }

    public String getName() {

       return name;

    }

    public void setName(String name) {

       this.name = name;

    }
}

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

﹤?xml version="1.0" encoding="UTF-8" ?﹥
﹤!DOCTYPE sqlMap
PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
""﹥

﹤sqlMap namespace="Author"﹥

﹤!--模块配置--﹥
﹤!--设置本映射文件中的别名--﹥

﹤typeAlias alias="author" type="com.ibatis.Author" /﹥

﹤!--

﹤cacheModel type="LRU" ﹥

设置缓存有效期,如果超出这个时间,则会清空缓存

﹤flushInterval hours="24"﹥﹤/flushInterval﹥  

指定执行特定的statement时,清空缓存

﹤flushOnExecute statement="updateAuthor"/﹥

SIZE:本cacheModel最大容纳数据对象的数量

﹤property value="1000"/﹥

﹤/cacheModel﹥

需要使用模块配置,如:﹤select resultClass="author" cacheModel="authorCache"﹥

把记录使用cacheModel"authorCache"进行缓存,以后程序再使用statement进行数据查询,就直接
去缓存中取数据,而不是去数据库中取数据
--﹥
﹤!--Statement配置--﹥
  

﹤select resultClass="author"﹥

﹤![CDATA[SELECT * FROM author]]﹥
﹤/select﹥
  

﹤update parameterClass="author"﹥

﹤![CDATA[UPDATE author SET WHERE ﹥  
﹤/update﹥
  

﹤delete parameterClass="author"﹥  

delete from author WHERE  
﹤/delete﹥  
  

﹤insert parameterClass="author"﹥

﹤![CDATA[INSERT INTO author(id,name) VALUES(#id#,#name#)]]﹥
﹤/insert﹥
﹤/sqlMap﹥

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

driver=com.microsoft.jdbc.sqlserver.SQLServerDriver

url=jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=ibatis

username=sa
password=sa

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

﹤?xml version="1.0" encoding="UTF-8" ?﹥
﹤!DOCTYPE sqlMapConfig
PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
""﹥
﹤!-- Ibatis配置文件--﹥
﹤sqlMapConfig﹥
﹤!-- 加载连接数据库属性文件 --﹥

﹤properties resource="com/ibatis/SqlMapConfig.properties"/﹥

﹤!--
cacheModelsEnabled:是否启动SqlMapClient的缓存机制。
enhancementEnabled:是否针对POJO启用字节码增加机制以提升geter/seter的调用效用,为延迟加载带来了及大的性能提升。
lazyLoadingEnabled:是否启用延迟加载机制。
maxRequests:最大并大请求数。
maxSessions:最大Session数,即当前最大允许的开发SqlMapClient数
maxTransactions:最大并发事务数。    
--﹥
﹤settings

cacheModelsEnabled="true"

enhancementEnabled="true"

lazyLoadingEnabled="true"

maxRequests="32"

maxSessions="10"

maxTransactions="5"

useStatementNamespaces="false"

/﹥
﹤!-- datasource --﹥

﹤transactionManager type="JDBC" ﹥

﹤dataSource type="SIMPLE"﹥

﹤!--JDBC驱动--﹥

﹤property name=JDBC.Driver value="${driver}"/﹥

﹤!--数据库URL--﹥

﹤property value="${url}"/﹥

﹤!--数据库用户名--﹥

﹤property value="${username}"/﹥

﹤!--数据库密码--﹥

﹤property value="${password}"/﹥

﹤!--不知道,在网站上查不出来,有时间再研究--﹥

﹤property value="true" /﹥

﹤!--数据库连接池可维持的最大容量--﹥

﹤property value="10"/﹥

﹤!--数据库连接池中允许的可挂起连接数--﹥

﹤property value="5"/﹥

﹤!--数据库连接池中,连接被某个任务所占用的最大时间--﹥

﹤property value="120000"/﹥

﹤!--当线程想从连接池中获取连接时,连接池中无可用连接,该参数设置线程所允许等待的最长时间--﹥

﹤property value="500"/﹥

﹤!--数据库连接状态检查语句--﹥

﹤property value="select 1 from author"/﹥

﹤!--是否允许检查连接状态--﹥

﹤property value="false"/﹥

﹤!--对持续连接超过设定值的连接进行检查--﹥

﹤property value="1"/﹥

﹤!--对空闲超过设定值的连接进行检查--﹥

﹤property value="1"/﹥

﹤/dataSource﹥
﹤/transactionManager﹥
﹤!--加载SqlMap文件--﹥

﹤sqlMap resource="com/ibatis/author.xml" /﹥

﹤/sqlMapConfig﹥

iBATIS入门程序第五步:

package com.ibatis;
import java.io.IOException;
import java.io.Reader;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
public class SqlMapConf {
//初始化SqlMapClient
private static SqlMapClient sqlmapclient;
static{
//定义ibatis配置文件的路径

String resource="com/ibatis/SqlMapConfig.xml";

try {
   //读取ibatis配置文件

   Reader reader=Resources.getResourceAsReader(resource);

   //通过SqlMapClientBuilder创建SqlMapClient

   sqlmapclient=SqlMapClientBuilder.buildSqlMapClient(reader);

} catch (IOException e) {
   // TODO Auto-generated catch block
   System.out.println("找不到SqlMapConfig.xml文件~~");
}
}
public static SqlMapClient getInstance(){
//返回sqlmapclient,SqlMapClient是ibatis的核心主建,提供数据操作的基础平台
   
return sqlmapclient;
}
/**
* SqlMapClient的另一种创建方式

* XmlSqlMapClientBuilder xmlbuilder=new XmlSqlMapClientBuilder();

* SqlMapClient sqlmapclient=xmlbuilder.builderSqlMap(reader);

* XmlSqlMapClientBuilder是ibatis2.0之后版本新引入的组件,用以取代1.X版本中的
* XmlSqlMapBuilder,其作用就是创建SqlMapClient。
*/
}

iBATIS入门程序第六步:

package com.ibatis;

import java.sql.SQLException;

import java.util.List;

import java.util.*;

import com.ibatis.sqlmap.client.SqlMapClient;

/**

* ibatis的事务管理器,目前只支持三种:JDBC,JTA,EXTERNAL
* JDBC:通过传统的JDBC CONNECTION.COMIT/rollback实现事务支持
* JTA:使用容器提供的JTA服务实现全局事务管理
* EXTERNAL:外部事务管理,如EJB中使用IBATIS,通过EJB的部署配置即可实现自动的事务管理机制
* 。此时IBATIS将把所有的事务委托给外部容器进行管理
*/

public class IbatisClient {

private static SqlMapClient sqlmapclient=SqlMapConf.getInstance();

//根据主健ID修改NAME

public static void updateAuthor(int id,String name){

Author author=new Author();

     author.setId(id);
     author.setName(name);

     try {

      //事务开始,用的是JDBC的事务管理

      sqlmapclient.startTransaction();

   sqlmapclient.update("updateAuthor",author);

   sqlmapclient.commitTransaction();

} catch (SQLException e) {

   // TODO Auto-generated catch block

   e.printStackTrace();

   System.out.println("修改错误~~");

}

finally{

   try {

    sqlmapclient.endTransaction();

   } catch (SQLException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();
   }
}
}

//查询所有的记录,返回一个集合

public static List findAll(){

List list=null;

try {

   sqlmapclient.startTransaction();

   //0:设置从第几条记录开始

   //1:设置显示记录记录

   //list=sqlmapclient.queryForList("getAllAuthor",null,0,1);

   list=sqlmapclient.queryForList("getAllAuthor",null);

   sqlmapclient.commitTransaction();

} catch (SQLException e) {

   // TODO Auto-generated catch block

   e.printStackTrace();

   System.out.println("查询错误~~");

}

finally{

   try {

    sqlmapclient.endTransaction();

   } catch (SQLException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();
   }
}

return list;

}

//添加操作

public static boolean insert(int id,String name){

boolean bool=false;

Author author=new Author();

author.setId(id);
author.setName(name);

try {

   sqlmapclient.startTransaction();

   sqlmapclient.insert("insertAuthor",author);

   bool=true;

   sqlmapclient.commitTransaction();

} catch (SQLException e) {

   // TODO Auto-generated catch block

   bool=false;

   e.printStackTrace();

   System.out.println("添加错误~~");

}

finally{

   try {

    sqlmapclient.endTransaction();

   } catch (SQLException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();
   }
}

return bool;

}

//删除操作

public static boolean delete(int id){

boolean bool=false;

Author author=new Author();

author.setId(id);

try {

   sqlmapclient.commitTransaction();

   sqlmapclient.delete("deleteAuthor",author);

   bool=true;

   sqlmapclient.startTransaction();

} catch (SQLException e) {

   // TODO Auto-generated catch block

   bool=false;

   e.printStackTrace();

   System.out.println("删除错误~~");

}

finally{

   try {

    sqlmapclient.endTransaction();

   } catch (SQLException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();
   }
}

return bool;

}

    public static void main(String str[]){

     //删除

     //boolean bool=IbatisClient.delete(3);

     //添加

     //boolean bool=IbatisClient.insert(3,"wanwu");

     //修改

     //IbatisClient.updateAuthor(3,"jj");

     //查询所有的记录

     List list=IbatisClient.findAll();
     Iterator iterator=list.iterator();

     while(iterator.hasNext()){

      Author author=(Author)iterator.next();
      System.out.println("﹥  
      System.out.println("﹥  
     }
    }

你可能感兴趣的文章
微服务架构的设计模式
查看>>
持续可用与CAP理论 – 一个系统开发者的观点
查看>>
nginx+tomcat+memcached (msm)实现 session同步复制
查看>>
c++指针常量与常量指针详解
查看>>
c++字符数组和字符指针区别以及str***函数
查看>>
c++类的操作符重载注意事项
查看>>
c++模板与泛型编程
查看>>
STL::deque以及由其实现的queue和stack
查看>>
CS4344驱动
查看>>
WAV文件解析
查看>>
DAC输出音乐2-解决pu pu 声
查看>>
WPF中PATH使用AI导出SVG的方法
查看>>
WPF UI&控件免费开源库
查看>>
QT打开项目提示no valid settings file could be found
查看>>
Win10+VS+ESP32环境搭建
查看>>
Ubuntu+win10远程桌面
查看>>
flutter-实现圆角带边框的view(android无效)
查看>>
flutter-实现一个下拉刷新上拉加载的列表
查看>>
android 代码实现圆角
查看>>
flutter-解析json
查看>>