45fan.com - 路饭网

搜索: 您的位置主页 > 网络频道 > 阅读资讯:如何使用ibatis对数据库增删改查?

如何使用ibatis对数据库增删改查?

2016-09-03 13:27:07 来源:www.45fan.com 【

如何使用ibatis对数据库增删改查?

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

// }

}

}

 

本文地址:http://www.45fan.com/a/question/71729.html
Tags: 数据库 一个 ibatis
编辑:路饭网
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部