ibatis CURD

 
一个使用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" " [url]http://www.ibatis.com/dtd/sql-map-2.dtd[/url]">
 <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"
 " [url]http://www.ibatis.com/dtd/sql-map-config-2.dtd[/url]">
 
 <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();    // }   }    }
相关文章
相关标签/搜索