本站首页    管理页面    写新日志    退出


«July 2020»
1234
567891011
12131415161718
19202122232425
262728293031


公告
 本博客在此声明所有文章均为转摘,只做资料收集使用。

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:1304
评论数量:2242
留言数量:5
访问次数:7228498
建立时间:2006年5月29日




[iBatis]一个使用ibatis对数据库增删改查的例子
软件技术

lhwork 发表于 2008-3-11 16:18:32

一个使用ibatis对数据库增删改查的例子:这里用的开发环境是:Eclipse3.2+mysql5.0.20,ibatis包是ibatis-common-2.jar,ibatis-dao-2.jar,ibatis-sqlmap-2.jar,mysql包是mysql-connector-java-5.0.3-bin.jar.步骤:1.创建数据库: create database itcast; use itcast;创建表: create table student (  id int primary key auto_increment,  firstname varchar(20) not null,  lastname varchar(20) not null ) 2.创建POJO类,Student.java,此程序中用到的所有类都放在cn.itcast包下面, 其他的配置文件都放在txd.configfile包下面。 package cn.itcast;  public class Student {  private Integer id;   private String firstname;   private String lastname;   public String getFirstname() {   return firstname;  }   public void setFirstname(String firstname) {   this.firstname = firstname;  }   public Integer getId() {   return id;  }   public void setId(Integer id) {   this.id = id;  }   public String getLastname() {   return lastname;  }   public void setLastname(String lastname) {   this.lastname = lastname;  } } 3.跟Student类对应的xml配置文件Student.xml, <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd"> <sqlMap namespace="student">  <!--insert元素,id属性值作为标识此元素,parameterClass属性是参数的类型,此  属性的值是Java类的全限定名(即包括类的包名)。它是可选的,但强烈建议使用。  它的目的是 限制输入参数的类型为指定的Java类,并优化框架的性能。##符号中  间的名字来自此类的属性.-->  <insert id="insert_student" parameterClass="cn.itcast.Student">   insert into student(firstname,lastname) values   (#firstname#,#lastname#)  </insert>   <select id="getStudent" resultClass="cn.itcast.Student">   select id, firstname, lastname from student  </select>   <delete id="delStudent" parameterClass="int">   delete from student where id=#value#  </delete>   <update id="updateStudent" parameterClass="cn.itcast.Student">   update student set firstname=#firstname#,lastname=#lastname#   where id=#id#  </update> </sqlMap> 4.jdbc.properties文件,存储数据库连接的driver,url,username,password等信息, driver=com.mysql.jdbc.Driver url=jdbc:mysql:///itcast username=root password= 5. SqlMap的配置文件SqlMapConfigExample.xml, <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd">  <sqlMapConfig>  <!--<properties>元素,用于在配置文件中使用标准的Java属性文件(name=value)-->  <properties resource="txd/configfile/jdbc.properties" />  <!--  cacheModelsEnabled:全局性地启用或禁用SqlMapClient的所有缓存model。  enhancementEnabled:全局性地启用或禁用运行时字节码增强,以优化访问   Java Bean属性的性能,同时优化延迟加载的性能。  lazyLoadingEnabled:全局性地启用或禁用SqlMapClient的所有延迟加载。  maxRequests:同时执行SQL语句的最大线程数。  maxSessions:同一时间内活动的最大session数。  maxTransactions:同时进入SqlMapClient.startTransaction()的最大线程数。  useStatementNamespaces:如果启用本属性,必须使用全限定名来引用mapped statement。   Mapped statement的全限定名由sql-map的名称和mapped-statement的名称合成。  -->  <settings cacheModelsEnabled="true" enhancementEnabled="true"   lazyLoadingEnabled="true" maxRequests="32" maxSessions="10"   maxTransactions="5" useStatementNamespaces="false" />   <!--  <transationManager>元素让您为SQL Map配置事务管理服务。属性type指定所  使用的事务管理器类型。这个属性值可以是一个类名,也可以是一个别名。  包含在框架的三个事务管理器分别是:JDBC,JTA和EXTERNAL。  -->  <transactionManager type="JDBC">   <!--dataSource元素为SQL Map数据源设置了一系列参数。-->   <dataSource type="SIMPLE">    <property name="JDBC.Driver" value="${driver}" />    <property name="JDBC.ConnectionURL" value="${url}" />    <property name="JDBC.Username" value="${username}" />    <property name="JDBC.Password" value="${password}" />   </dataSource>  </transactionManager>  <!--<sqlMap>元素用于包括SQL Map映射文件和其他的SQL Map配置文件。-->  <sqlMap resource="txd/configfile/Student.xml" /> </sqlMapConfig> 6.MySqlMapClient.java类,用于产生一个SqlMapClient package cn.itcast;  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 MySqlMapClient {   private static SqlMapClient sqlMapClient;   static {   String resource = "txd/configfile/SqlMapConfigExample.xml";   Reader reader = null;   try {    reader = Resources.getResourceAsReader(resource);    sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);   } catch (IOException e) {    e.printStackTrace();   }  }   public static SqlMapClient getSqlMapInstance() {   return sqlMapClient;  }  } 7.StudentManager 类测试一下上面的代码, package cn.itcast;  import java.sql.SQLException; import java.util.List;  import com.ibatis.sqlmap.client.SqlMapClient;  public class StudentManager {   public static void main(String[] args) {   SqlMapClient sqlMap = MySqlMapClient.getSqlMapInstance();    // insert一条记录    // Student student = new Student();   // student.setFirstname("zhang");   // student.setLastname("san");   // try {   // sqlMap.insert("insert_student", student);   // System.out.println("插入成功!");   // } catch (SQLException e) {   // e.printStackTrace();   // }    // delete一条记录    // try {   // int result = sqlMap.delete("delStudent", 5);   // System.out.println(result);   // } catch (SQLException e) {   // e.printStackTrace();   // }    // update一条已存在的记录    Student student = new Student();   student.setId(1);   student.setFirstname("jiang");   student.setLastname("zemin");   try {    int result = sqlMap.update("updateStudent", student);    System.out.println(result);   } catch (SQLException e) {    e.printStackTrace();   }    // query获得多条记录    // try {   // List<Student> list = sqlMap.queryForList("getStudent", null);   // for (Student student : list) {   // System.out   // .println(student.getId() + "\t"   // + student.getFirstname() + "\t"   // + student.getLastname());   // }   // } catch (SQLException e) {   // e.printStackTrace();   // }    // query单条记录    // try {   // Student student = (Student) sqlMap.queryForObject("getStudent", 1);   // System.out.println(student.getId());   // System.out.println(student.getFirstname());   // System.out.println(student.getLastname());   // } catch (SQLException e) {   // e.printStackTrace();   // }  }  }


阅读全文(3378) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.047 second(s), page refreshed 144422232 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号