您的位置:首页 > 其它

ibatis的实现

2015-11-03 14:11 197 查看
IBATIS的使用指引》

IBATIS的历史:1、IBATIS融入了Apache的社会;2、改名MYBATIS“投入”Google。详情自个了解~

现在IBATIS虽不新鲜,但还是有人在使用。多学无害!

下面开始了解IBATIS的使用:

1、IBATIS Demo结构



2、配置文件说明

(1)数据源:jdbc.properties

#*********************数据库文件配置***************************
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost/ibatis
username=root
password=123

(2)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="jdbc.properties"/>

<!-- setting:优化设定 具体参数可以参照对应的文档 -->
<settings cacheModelsEnabled="true" useStatementNamespaces="true" />

<!--事务类型3种 :JDBC、JTA和EXTERNAL -->
<transactionManager type="JDBC">
<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 -->
<sqlMap resource="com/wrs/maps/User.xml" />

</sqlMapConfig>
(3)User.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="User">
<!-- 关联类:简化映射 -->
<typeAlias alias="User" type="com.wrs.model.User" />

<resultMap id="userResult" class="User">
<result property="id" column="id" jdbcType="NUMBER" />
<result property="name" column="name" jdbcType="VARCHAR" />
<result property="date" column="date" jdbcType="VARCHAR" />
</resultMap>

<select id="getByPK" resultMap="userResult" parameterClass="User">
select id, name, date
from user where id = #id#
</select>

<select id="getById" resultMap="userResult" parameterClass="java.lang.String">
select id, name, date
from user where id = $String$
</select>

<sql id="Dy_SC">
<dynamic prepend="WHERE">
<isNotNull prepend="AND" property="id">id like #id#</isNotNull>
<isNotNull prepend="AND" property="name">name like #name#</isNotNull>
</dynamic>
</sql>

<select id="getUser" resultMap="userResult">
select id, name, date from user
<include refid="Dy_SC" />
</select>

<insert id="insertUser" parameterClass="User">
INSERT INTO user (name,date) VALUES (#name#,#date#)
</insert>

<insert id="insertUserTest" parameterClass="User">
INSERT INTO user (id,name,date) VALUES (#id#,#name#,#date#)
</insert>

<update id="updateUser" parameterClass="User">
UPDATE user SET name=#name#, date=#date# WHERE id = #id#
</update>

<delete id="deleteUser" parameterClass="java.lang.String">
delete from user where id=#value#
</delete>

<statement id="getMaxId" resultClass="java.lang.Integer">
select Max(id) from user
</statement>

<statement id="getMax" resultClass="java.util.HashMap">
select Max(id) as id,Max(name) as name,Max(date) as date from user
</statement>

</sqlMap>
3、IBATIS调用实现主要代码:

package com.wrs.model;

import java.io.Serializable;

public class User implements Serializable{

private static final long serialVersionUID = 1L;

private int id;
private String name;
private String date;

public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}


package com.wrs.action;

import java.io.Reader;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import com.wrs.model.User;

/**
* Ibatis演示demo
*/
public class UserAction {

//读取sqlmap配置
public static SqlMapClient getSqlMapClient() {
String resource = "SqlMapConfig.xml";
SqlMapClient sqlMap = null;
try {
//加载配置文件
Reader reader = Resources.getResourceAsReader(resource);
sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
} catch (Exception e) {
e.printStackTrace();
}
return sqlMap;
}

//新增user
public static void insert() {
SqlMapClient sqlMap = getSqlMapClient();
try {
sqlMap.startTransaction();
User user = new User();
user.setName("insert");
Date date = new Date();

user.setDate(new Timestamp(date.getTime()).toString());
sqlMap.insert("User.insertUser", user);
System.out.println("insert user(" + user.getName() + ") into database succeed ");
sqlMap.commitTransaction();
} catch (SQLException e) {
e.printStackTrace();
}
}

//修改user
public static void update() {
SqlMapClient sqlMap = getSqlMapClient();
try {
sqlMap.startTransaction();
Object maxId = sqlMap.queryForObject("User.getMaxId", null);
if(maxId!=null){
User user = (User)sqlMap.queryForObject("User.getById", maxId);
user.setName("update");
sqlMap.update("User.updateUser", user);
System.out.println("update user(" + user.getName() + ") succeed ");
}else{
System.out.println("===================更新失败=================== ");
}
sqlMap.commitTransaction();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
sqlMap.endTransaction();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

//删除user
public static void delete() {
SqlMapClient sqlMap = getSqlMapClient();
try {
sqlMap.startTransaction();
//删除最后一个user
String maxId = sqlMap.queryForObject("User.getMaxId", null).toString();
sqlMap.delete("User.deleteUser", maxId);
System.out.println("update user(id:" + maxId + ") succeed ");
sqlMap.commitTransaction();
} catch (SQLException e) {
e.printStackTrace();
}
}

//查询所有user
public static List getUser() {
SqlMapClient sqlMap = getSqlMapClient();
List<User> user = null;
try {
sqlMap.startTransaction();
HashMap params = new HashMap();
params.put("name", "%insert%");
user = sqlMap.queryForList("User.getUser", params);
//输出所有结果
if(user!=null&&user.size()>0){
for (User o : user) {
System.out.println("id:" + o.getId() + "\nname:" + o.getName()+ "\nDate:" + o.getDate() + "\n------------");
}
}else {
System.out.println("===================没有查到数据===================");
}
sqlMap.commitTransaction();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
sqlMap.endTransaction();
} catch (SQLException e) {
e.printStackTrace();
}
}
return user;
}

//查ID最大的user
public static Map getMax() {
SqlMapClient sqlMap = getSqlMapClient();
try {
sqlMap.startTransaction();
Map search = (HashMap) sqlMap.queryForObject("User.getMax", null);
System.out.println(search.get("id").toString() + "\n"
+ search.get("name").toString() + "\n"
+ search.get("date").toString());
sqlMap.commitTransaction();
return search ;
} catch (SQLException e) {
e.printStackTrace();
return null ;
}
}

//根据ID查user
public static void getByPK() {
SqlMapClient sqlMap = getSqlMapClient();
User user = new User();
try {
sqlMap.startTransaction();
user.setId(1);
user = (User) sqlMap.queryForObject("User.getByPK", user);
System.out.println(user.getId() + "\n" + user.getName() + "\n"
+ user.getDate());
sqlMap.commitTransaction();
} catch (SQLException e) {
e.printStackTrace();
}
}

//测试方法
public static void main(String[] args) {
//新增
//insert();

//修改
//update();

//删除
//delete();

//查找所有user
getUser();

//查找ID最大的user
//getMax();

//通过ID查user
//getByPK();
}
}

友情提示:本人提供相关IT技术开发和支持,与其相关技术交流。

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