初遇 iBATIS

iBATIS技术, 哈,,感觉挺不错的,在我看来发展前景应该也是很乐观的,找了一些相关资料,顺手也写了个例子,,,
1.首先创建个web项目:iBATIS
2.创建包:com.ibatis
3.在包下创建个database.properties文件,存放数据库连接信息,内容如下:

driver=net.sourceforge.jtds.jdbc.Driver
url=jdbc:jtds:sqlserver://localhost:1433/develop_test
username=sa
password=root

4.创建sql-map-config.xml文件(个人认为她是iBATIS的核心配置),内容如下:

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">

<sqlMapConfig>

<properties resource="com/ibatis/database.properties"/><!-- 连接数据库的配置信息 -->

<!-- 更加导入的资源读取相关配置信息 -->
<transactionManager type="JDBC">
<dataSource type="SIMPLE">
<property value="${driver}" name="JDBC.Driver"/>
<property value="${url}" name="JDBC.ConnectionURL"/>
<property value="${username}" name="JDBC.Username"/>
<property value="${password}" name="JDBC.Password"/>
</dataSource>
</transactionManager>

<sqlMap resource="com/ibatis/users.xml"/><!-- 存放sql语句,个人认为一个表对应一个配置文件,包含CURD操作 -->

</sqlMapConfig>


5.创建对应表操作的users.xml文件,内容如下:

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">

<sqlMap namespace="user">
<!-- 与数据库的表对应 ,alias="user" 取是别名-->
<typeAlias alias="user" type="com.ibatis.User"/>

<!-- 调用方可以通过id进行操作 -->
<statement id="createTableTestUser" >
create table testUser(
id int identity(0,1) not null,
name varchar(16) primary key,
age char(3)
)
</statement>

<insert id="addUser" parameterClass="user"><!-- parameterClass需要参数的类型 -->
INSERT INTO testUser (name, age)
VALUES (#name#, #age#)
</insert>

<update id="updateUser" parameterClass="map">
update testUser
set age = #age#
where name = #name#
</update>

<!-- resultClass 返回的对象类型 -->
<select id="getUserByName" resultClass="user" parameterClass="java.lang.String">
SELECT name,age
FROM testUser
WHERE name = #name#
</select>

<delete id="deleteUserByName" parameterClass="java.lang.String">
delete from testUser
where name = #name#
</delete>

<statement id="dropTableTestUser">
drop table testUser
</statement>

</sqlMap>


6.编写一个javaBean,对应操作的表,包含set和get方法,内容如下:

public class User {
private String name;
private String age;
//set和get方法省略...
}


7.最后编写CURD的测试代码:

package com.ibatis;

import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import java.io.Reader;
import java.util.HashMap;
import java.util.Map;

public class Test {

/**
* @param args
*/
public static void main(String[] args) {
String resource = "com/ibatis/sql-map-config.xml";
try {
//读取配置文件
Reader reader = Resources.getResourceAsReader(resource);
//得到SqlMapClient
SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);

String name = "宇宙";
String age = "22";
String update = "23";

//开始Ibatis事务
sqlMap.startTransaction();
//
System.out.println("*****************" + "创建表:TestUser");
sqlMap.update("createTableTestUser",null);
System.out.println("创建成功!");

//
System.out.println("*****************" + "执行插入操作:name = ‘" + name + "’ age=" + age);

User user = new User();
user.setName(name);
user.setAge(age);
//执行插入操作
Object o= sqlMap.insert("addUser", user);
if(o == null)
System.out.println("插入操作成功!");
//
System.out.println("*****************" + "将name = ‘" + name + "’的age字段更新为‘" + update + "'");
//跟新操作
Map map = new HashMap(2);
map.put("name", name);
map.put("age", update);
int j = sqlMap.update("updateUser", map);
if(j>0)
System.out.println("跟新成功!");
else
System.out.println("跟新失败!");

//
System.out.println("*****************" + "查询name='" + name + "'的用户信息");
//查询操作
User user02 = (User)sqlMap.queryForObject("getUserByName", name);
System.out.println("查询结果:");
System.out.println("name:" + user02.getName());
System.out.println("age:" + user02.getAge());

// System.out.println("*****************" + "删除name='" + name + "'的用户");
//删除操作
int i = sqlMap.delete("deleteUserByName", name);
System.out.print("执行结果:");
System.out.println("删除了" + i +"条记录");

//
System.out.println("*****************" +"删除表:TestUser");
sqlMap.update("dropTableTestUser", null);
System.out.println("删除表:TestUser,,,操作成功!");

//

//提交IBatis事务
sqlMap.commitTransaction();

} catch (Exception e) {
e.printStackTrace();
}
}

}


执行结果:

*****************创建表:TestUser
创建成功!
*****************执行插入操作:name = ‘宇宙’ age=22
插入操作成功!
*****************将name = ‘宇宙’的age字段更新为‘23'
跟新成功!
*****************查询name='宇宙'的用户信息
查询结果:
name:宇宙
age:23
*****************删除name='宇宙'的用户
执行结果:删除了1条记录
*****************删除表:TestUser
删除表:TestUser,,,操作成功!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值