您的位置:首页 > 其它

iBatis的简单增删改查(CRUD)操作二

2014-03-11 17:04 281 查看
开发环境是: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();

   // }

  }

 

 }

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: