`

IBATIS简单使用

 
阅读更多

IBATIS,mybatis的前身,这次项目中用到了,就做个总结:

一、jar包:

ibatis-2.3.4.726.jar

mysql-connector-java-5.1.12.jar

log4j-1.2.17.jar

common-logging-1.jar

二、sqlMapConfig.xml

 

<?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" /> <!-- 数据库资源文件 -->
 	<settings 
 		cacheModelsEnabled ="true"    
   		lazyLoadingEnabled="true"   
   		enhancementEnabled="true"  
   		errorTracingEnabled="true"  
   		maxRequests="10"    
  		maxSessions="10"  
  		maxTransactions="3"   
 		useStatementNamespaces="true" />	
 		<!-- cacheModelsEnabled:启用缓存机制
 			lazyLoadingEnabled:启用懒加载机制
 			enhancementEnabled:启用字节码增强机制
 			errorTracingEnabled:启用错误处理机制
 			maxRequests:最大并发请求数
 			maxSessions:最大并发session数
 			useStatementNamespaces:开启命名空间 
 		-->
 		
	<transactionManager type="JDBC" commitRequired="false" ><!--定义了ibatis的事务管理器,3中(JDBC,JTA,EXTERNAL) -->  
		<dataSource type="SIMPLE" ><!-- type属性指定了数据源的链接类型,也有3种类型(SIMPLE,DBCP,JNDI) -->  
			<property name="JDBC.Driver" value="${driver}"/>
			<property name="JDBC.ConnectionURL" value="${url}"/>
			<property name="JDBC.Username" value="${username}"/>
			<property name="JDBC.Password" value="${password}"/>
			<property  name ="Pool.MaximumActiveConnections"  value ="15"   />   <!-- 连接池维持的最大容量 -->  
	        <property  name ="Pool.MaximumIdleConnections"  value ="10" />   <!-- 连接池允许挂起的最大连接 -->  
	        <property  name ="Pool.MaximumCheckoutTime"  value ="120000" />   <!-- 连接被某个任务所允许占用的最大时间 -->  
	        <property  name ="TimeToWait"  value ="500" />   <!-- 线程允许等待的最大时间 -->
		</dataSource>
	</transactionManager>
	<sqlMap resource="com/xxx/ibatisdemo/model/User.xml" />
</sqlMapConfig>

 三、User类

 

 

package com.xxx.ibatisdemo.model;

public class User {

	private int id;
	private String username;
	private String userPwd;
	private String userTel;
	private String userEmail;
	public User() {	}
	public User(int id, String username, String userPwd) {
		this.username = username;
		this.userPwd = userPwd;
	}
	public User(String username, String userPwd, String userTel,String userEmail) {
		this.username = username;
		this.userPwd = userPwd;
		this.userTel = userTel;
		this.userEmail = userEmail;
	}
	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 getUserPwd() {
		return userPwd;
	}
	public void setUserPwd(String userPwd) {
		this.userPwd = userPwd;
	}
	public String getUserTel() {
		return userTel;
	}
	public void setUserTel(String userTel) {
		this.userTel = userTel;
	}
	public String getUserEmail() {
		return userEmail;
	}
	public void setUserEmail(String userEmail) {
		this.userEmail = userEmail;
	}
	
}

 四、User.xml :对User的具体操作定义在这里

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL MAP 2.0//EN" 
	"http://ibatis.apache.org/dtd/sql-map-2.dtd">
	
<sqlMap namespace="userSqlMap"  > <!-- namespace:相同命名空间下 id 不可重复,不同命名空间可重复 -->
	
	<typeAlias alias="User" type="com.xxx.ibatisdemo.model.User"/>
	
	<resultMap class="User" id="userResultMap">
		<result property="id" column="id" />
		<result property="username" column="user_name"/>
		<result property="userPwd" column="user_pwd"/>
		<result property="userTel" column="user_tel"/>
		<result property="userEmail" column="user_email"/>
	</resultMap>
	
	<!-- 分页查询数据头文件 -->
	<sql id="queryHeader">
		select * from (select innerresult.*, rownum innerindex from (
	</sql>
	<!-- 分页查询数据尾文件 -->
	<sql id="queryFooter">
		<![CDATA[
		) innerresult) where innerindex > #start# and innerindex <= #end#
		]]> 
	</sql>
	
	<insert id="addUser" parameterClass="User" >
		<!-- oracle sequence 
		<selectKey keyProperty="id" resultClass="int">
			SELECT SEQ_ALARM_OVERLOAN.nextval as id FROM dual
		</selectKey>
		 -->
		insert into t_user (
		id
			<dynamic>
				<isNotEmpty prepend="," property="username" >user_name</isNotEmpty>
				<isNotEmpty prepend="," property="userPwd" >user_pwd</isNotEmpty>
				<isNotEmpty prepend="," property="userTel" >user_tel</isNotEmpty>
				<isNotEmpty prepend="," property="userEmail" >user_email</isNotEmpty>
			</dynamic>
		)
		VALUES(
		 #id#
			 <dynamic>
			 	<isNotEmpty prepend="," property="username" >#username#</isNotEmpty>
			 	<isNotEmpty prepend="," property="userPwd" >#userPwd#</isNotEmpty>
			 	<isNotEmpty prepend="," property="userTel" >#userTel#</isNotEmpty>
			 	<isNotEmpty prepend="," property="userEmail">#userEmail#</isNotEmpty>
			 </dynamic>
		)
	</insert>
	
	<delete id="deleteUserById" parameterClass="int" >
		DELETE FROM t_user  WHERE id = #id#
	</delete>
	
	<update id="updateUser" parameterClass="User" >
		<![CDATA[ UPDATE t_user]]>
		<dynamic prepend="SET">
			<isNotEmpty prepend="," property="username">
				<![CDATA[user_name=#username#]]>
			</isNotEmpty>
			<isNotEmpty prepend="," property="userPwd">
				<![CDATA[user_pwd=#userPwd#]]>
			</isNotEmpty>
			<isNotEmpty prepend="," property="userTel">
				<![CDATA[user_tel=#userTel#]]>
			</isNotEmpty>
			<isNotEmpty prepend="," property="userEmail">
				<![CDATA[user_email=#userEmail#]]>
			</isNotEmpty>
		</dynamic>
		<![CDATA[
			WHERE id = #id#
		]]>
	</update>
	
	<select id="findUserById" parameterClass="int" resultClass="User" >
		select 
			t.id as id,
			t.user_name as username,
			t.user_pwd as userPwd,
			t.user_tel as userTel,
			t.user_email as userEmail
 		from t_user t where t.id=#id#
	</select>
	
	<select id="findUserList" resultClass="User" resultMap="userResultMap" >
		select * from t_user t
	</select>
	
</sqlMap>

 五、UserDaoImpl:

package com.xxx.ibatisdemo.dao.impl;

import java.io.IOException;
import java.io.Reader;
import java.sql.SQLException;
import java.util.List;

import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import com.xxx.ibatisdemo.dao.IUserDao;
import com.xxx.ibatisdemo.model.User;
import com.xxx.ibatisdemo.util.Page;

public class UserDao implements IUserDao {

	private static SqlMapClient sqlMapClient = null;
	
	static{
		try {
			Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");
			sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
			reader.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}
	
	@Override
	public void addUser(User user) {
		try {
			sqlMapClient.insert("userSqlMap.addUser", user);
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	@Override
	public void deleteUserByID(int id) {
		try {
			sqlMapClient.delete("userSqlMap.deleteUserById", id);
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	@Override
	public void updateUser(User user) {
		try {
			sqlMapClient.update("userSqlMap.updateUser", user);
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	@Override
	public User findUserById(int id) {
		User user=null;
		try {
			user = (User) sqlMapClient.queryForObject("userSqlMap.findUserById", id);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return user;
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<User> findUserlist() {
		List<User> userList = null;
		try {
			userList = sqlMapClient.queryForList("userSqlMap.findUserList");
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return userList;
	}
}

 六、测试类:

package test;

import java.util.List;

import org.junit.Test;

import com.xxx.ibatisdemo.dao.impl.UserDao;
import com.xxx.ibatisdemo.model.User;

public class TestIbatis {
	
	@Test
	public void testIbatisInsert(){
		UserDao dao = new UserDao();
		User user = new User("eee","123","123123","eee@m.com");
		user.setId(4);
		dao.addUser(user);
	}
	@Test
	public void testDeleteUser(){
		UserDao dao = new UserDao();
		dao.deleteUserByID(3);
		
	}
	@Test
	public void testFindUserById(){
		UserDao dao = new UserDao();
		User user = dao.findUserById(1);
		System.out.println(user.getId());
		System.out.println(user.getUsername());
		System.out.println(user.getUserPwd());
		System.out.println(user.getUserTel());
		System.out.println(user.getUserEmail());
	}
	@Test
	public void testUpdateUser(){
		UserDao dao = new UserDao();
		User user = new User("fff","123","ffffff","fff@m.com");
		user.setId(5);
		dao.updateUser(user);
	}
	@Test
	public void testListUser(){
		UserDao dao = new UserDao();
		List<User> userList = dao.findUserlist();
		System.out.println("userList size:"+userList.size());
		for (User u : userList) {
			System.out.println(u.getId()+"-"+u.getUsername()+"-"+u.getUserPwd()+"-"+u.getUserTel()+"-"+u.getUserEmail());
		}
	}
}

 附:项目结构



 一个小小的demo,实现了User的增删改查

 

  • 大小: 16.3 KB
分享到:
评论

相关推荐

    ibatis简易使用 ibatis简易使用 ibatis简易使用

    以下是对iBATIS简易使用的详细解释: 1. **环境准备**: - **jar文件**:iBATIS框架运行需要依赖一些库文件,包括`log4j`用于日志记录,`ibatis`核心库,以及`jdbc`驱动,这些都需要添加到项目的类路径中。 - **...

    ibatis简单使用的想法

    ibatis简单使用的想法 ibatis 是一个成熟的框架,现在已经是改名字叫mybatis了,框架的配置比较烦,如xml,dao的书写,还有每个表还要对应于javabean,没有的话,map 也成,这里希望对其进行简单的简化。

    IBatis简单使用

    4. **事务管理**: IBatis提供了简单的事务控制,可以通过编程方式或者配置方式来管理事务的提交、回滚等操作。 5. **缓存机制**: 内置的缓存机制可以提高数据访问效率,减少对数据库的频繁访问。 **使用步骤** 1....

    ibatis的使用教程

    要开始使用 Ibatis,首先需要从官方网站下载最新版本的 ibatis jar 包,以及 log4j 日志框架的 jar 包。然后,在Java项目中添加这些库,配置log4j.properties以开启SQL日志输出。接着,新建主配置文件sqlMapConfig....

    ibatis 相关使用文档及安装包ibatis 相关使用文档及安装包

    SQL Maps是iBATIS的核心部分,它们将数据库查询与Java对象绑定,使得数据库操作变得简单直观。 《iBATIS-DAO-2.pdf》可能涉及到了Data Access Object(DAO)模式的实现和iBATIS的结合。DAO模式是一种设计模式,用于...

    使用的iBatis 简单例子

    在这个“使用的iBatis简单例子”中,我们将深入探讨如何配置和使用iBatis进行数据库交互。 首先,iBatis的核心组件包括XML配置文件、SQL映射文件以及SqlSessionFactory。XML配置文件用于定义数据源、事务管理器等...

    ibatis 使用手册

    入门教程通常从简单的Hello World示例开始,逐步引导读者了解如何创建和配置iBatis项目,编写第一条SQL,处理查询结果,以及如何进行异常处理。同时,还会讲解如何在实际项目中结合Spring等框架进行集成使用。 **...

    ibatis简单CRUD例子

    Ibatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 **Ibatis的主要特点** 1. **简洁的API设计**:Ibatis提供了简单易用的...

    ibatis使用手册

    通过 DAO,开发者可以使用简单的接口来操作数据,而无需关心底层的 SQL 实现。 **二、Ibatis 的使用准备** 在开始使用 Ibatis.Net 之前,你需要进行以下步骤: 1. **下载软件包**:从官方网站...

    ibatis使用及环境搭建文档

    一个简单的Ibatis查询操作示例: 1. 定义Mapper XML文件,包含一个查询所有用户信息的SQL语句: ```xml SELECT * FROM users ``` 2. 创建对应的DAO接口: ```java public interface UserMapper { List&lt;User&gt; ...

    ibatis简单例子

    这个"ibatis简单例子"旨在帮助初学者理解Ibatis的基本用法,包括配置文件的设置、SQL映射文件的编写以及如何在Java代码中调用这些映射的SQL。通过实践这两个小例子,可以深入理解Ibatis如何将数据库操作与业务逻辑...

    ibatis 使用简单配置

    ### ibatis 使用简单配置 #### 一、简介 在本文档中,我们将详细介绍如何通过简单的配置来使用ibatis(现在通常被称为MyBatis),并提供一个具体的示例来帮助理解整个配置过程及其应用场景。 #### 二、ibatis简介...

    iBATIS缓存的使用方法

    - 这是最简单的缓存实现方式,使用引用计数来管理缓存项。当一个缓存项的引用计数为零时,该项就会被移除。 - MEMORY缓存不支持统一的失效策略,适合对内存使用没有严格限制的场景。 2. **LRU ...

    maven整合ibatis的简单例子

    下面我们将详细探讨如何将Maven与iBatis整合,以实现一个简单的例子。 首先,我们需要创建一个新的Maven项目。在Maven的`pom.xml`文件中,我们需要添加iBatis和其依赖的数据库驱动(如MySQL驱动)作为项目的依赖。...

    Ibatis简易教程

    在iBatis的简易教程中,我们将通过三个例子来逐步理解如何配置和使用iBatis。首先,我们需要创建数据库和对应的表。在本例中,我们使用MySQL 5.0,并创建了一个名为`contact`的表,包含`contactid`、`firstName`、`...

    Ibatis入门例子,Ibatis教程

    以上就是一个简单的Ibatis入门例子,展示了如何使用Ibatis进行数据库查询。实际上,Ibatis还支持动态SQL、结果映射、参数映射等多种高级特性,可以实现更复杂的业务逻辑。例如,你可以通过使用`&lt;if&gt;`、`&lt;choose&gt;`等...

    ibatis简单实例

    **Ibatis简单实例** 在"IbatisTest"这个简单实例中,我们通常会经历以下步骤: 1. **引入依赖**: 在项目中引入Ibatis的jar包,包括核心库mybatis-x.x.x.jar和相关数据库驱动。 2. **配置SqlMapConfig.xml**: 配置...

    ibatis源码,ibatis源码 ibatis源码 ibatis源码

    ResultMap不仅支持简单的列名映射,还能处理复杂的一对多、一对一关系映射。 六、ParameterHandler ParameterHandler负责设置PreparedStatement的参数。`org.apache.ibatis.executor.parameter.ParameterHandler`...

    Ibatis 入门经典 实例

    Ibatis 是一款著名的轻量级 Java 持久层框架,它提供了一种映射 SQL 和 Java 对象的简单方式,从而减轻了开发人员在数据库操作中的工作负担。这篇实例教程将带你深入理解 Ibatis 的核心概念和常用功能,帮助你快速...

Global site tag (gtag.js) - Google Analytics