您的位置:首页 > 其它

iBATIS框架技术----一个简单的应用

2009-08-31 20:11 691 查看
在这里我不多讲理论方面的内容,我以一个实现开发的一个子例子来说明如何使用iBatis进行实际的开发应用

iBatis同hibernate一样,同样作用于数据库,而其操作的核心:SQL语句之前被写入到一个xml配置文件中。然后

我们就可以通过读取该配置文件,进行相应的查询,删除,插入,更新等操作,而且我们还可以重新这个操作功能

这里我不做出iBatis和Hibernate的性能比较,相信大家如果使用到了iBatis框架,你就会体验它的强大和精秒之处的。

首先要配置一个properties文件.这个文件中定义了一个连接mysql数据库的驱动,url,user,password.等等

如下:

mysql.driver = com.mysql.jdbc.Driver
mysql.url = jdbc:mysql://localhost:3306/xb
mysql.username = root
mysql.password = harmony

然后定义一个SqlMapConfig.xml文件,这个文件负责读取上面的配置文件.

<!-- 唯一的Properties文件,加载数据库连接信息 -->
<properties resource="mysql.properties"/>

还可以进行事务管理

<!-- 配置Ibatis事务管理,使用JDBC事务类型,数据源使用Simple类型 -->
<transactionManager type="JDBC">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="${mysql.driver}"/>
<property name="JDBC.ConnectionURL" value="${mysql.url}"/>
<property name="JDBC.Username" value="${mysql.username}"/>
<property name="JDBC.Password" value="${mysql.password}"/>
</dataSource>
</transactionManager>

最后引入配置信息,也就是一些SQL语句配置文件

<!-- 配置Ibatis要使用的SqlMap文件信息 -->
<sqlMap resource="com/jack/ibatis/pojo/map/person.xml"/>

我们下面讲一下就讲这个person.xml

<sqlMap>
<!-- 为Person类设置一个别名 -->
<typeAlias alias="person" type="com.jack.ibatis.pojo.Person"/>

<!-- 配置表和类之间的映射关系 -->
<resultMap class="com.jack.ibatis.pojo.Person" id="personMap">
<result property="id" column="ID"/>
<result property="username" column="U_NAME"/>
<result property="password" column="U_PASSWORD"/>
</resultMap>

<!-- 添加用户 -->
<insert id="insertPerson" parameterClass="person">
<!-- 配置Mysql主键自动生成 -->
<selectKey keyProperty="id" resultClass="int">
SELECT LAST_INSERT_ID() as value
</selectKey>
<![CDATA[
INSERT PERSON(U_NAME,U_PASSWORD) VALUES(#username#,#password#)
]]>
</insert>

<!-- 查看特定用户 -->
<select id="queryPersonById" parameterClass="int" resultMap="personMap">
<![CDATA[
SELECT * FROM PERSON WHERE ID=#id#
]]>
</select>

<!-- 查看所有的用户 -->
<select id="queryAllPerson" resultMap="personMap">
<![CDATA[
SELECT * FROM PERSON
]]>
</select>

下面定义javaBean类也叫JOPO类

package com.jack.ibatis.pojo;

public class Person {
private int id;
private String username;
private String password;

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}
}
也就是一些属性,gettter/setter方法

下面使用一个测试类测试一下

String resource = "sqlMapConfig.xml";

Reader reader = Resources.getResourceAsReader(resource);
//定义SqlMapClient
SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);

Person person = new Person();
person.setUsername("jack");
person.setPassword("jack");
//开始一个事务
sqlMap.startTransaction();
sqlMap.insert("insertPerson", person);

sqlMap.commitTransaction();

//提交一个事务

如果查看一下就数据如果多了一行记录,说明操作成功了。

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