ibatis的实现

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技术开发和支持,与其相关技术交流。

如需请加微信号:




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值