百度空间 | 百度首页 
 
查看文章
 
[iBatis]一个使用ibatis对数据库增删改查的例子
2008年11月08日 星期六 17:18

一个使用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();
    // }
   }

}


类别:Ibatis | 添加到搜藏 | 浏览() | 评论 (0)
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     
 
精彩相册
   
     

©2009 Baidu