`

ibatis入门尝试3-namespace命名空间 parameterMap Like模糊查询 批量及事物处理

阅读更多
1 namespace 命名空间

为了测试命名空间 在创建表 u1(id name email) u2(id name email)
分别创建 实体Bean和映射文件
User.java
package com.bean;

public class User {
	private Integer id;
	private String name;
	private String email;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
}


User.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">
<typeAlias alias="userVO" type="com.bean.User"/>
<insert id="createUser" parameterClass="userVO">
insert into u1(name,email)
values(#name#,#email#)
</insert>
</sqlMap>



User2.java
package com.bean;

public class User2 {
	private Integer id;
	private String name;
	private String email;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
}


User2.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="user2">
<typeAlias alias="user2VO" type="com.bean.User2"/>
<insert id="createUser" parameterClass="user2VO">
insert into u2(name,email)
values(#name#,#email#)
</insert>
</sqlMap>


ibatis 配置文件
SqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig
PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
	<settings
		cacheModelsEnabled="true"
		enhancementEnabled="true"
		lazyLoadingEnabled="true"
		maxRequests="32"
		maxSessions="10"
		maxTransactions="5"
		useStatementNamespaces="false"
	/>
	<transactionManager type="JDBC">
		<dataSource type="SIMPLE">
			<property name="JDBC.Driver"
				value="com.mysql.jdbc.Driver" />
			<property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost:3306/ibatis_db?characterEncoding=UTF-8" />
			<property name="JDBC.Username" value="root" />
			<property name="JDBC.Password" value="" />
		</dataSource>
	 </transactionManager>
	<sqlMap resource="com/bean/User.xml" />
 
	<sqlMap resource="com/bean/User2.xml"/>	

</sqlMapConfig>

测试方法
Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");
SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
User u =new User();
u.setName("aa");
u.setEmail("ass@test.com");
sqlMap.insert("createUser", u);

如果此时执行 会报异常 原因很明显
There is already a statement named createUser in this SqlMap.
就是因为在加载的实体映射文件中 都含有 id = "createUser"
这里去掉已经 <sqlMap resource="com/bean/User2.xml"/>就可以
这也就是为什么我们要引入namespace的原因
我们的映射文件中已经设置了namespace
<sqlMap namespace="user">
实际ibatis的默认是不开启的namespace的
此时我们将 配置文件中的useStatementNamespaces="false" 改为true
我们在测试一下,不过此时的调用方式 需要 namespace.id_name
sqlMap.insert("user.createUser", u);
Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");
SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
User u =new User();
u.setName("aa");
u.setEmail("ass@test.com");
sqlMap.insert("user.createUser", u);


这里需要注意  typeAlias 标签不受命名空间影响 只对应当前的实体映射页

2 parameterMap传入参数映射
之前我们已经用到过rseultMap映射,现在我们来看一下 parameterMap
我们修改User.xml
	<parameterMap class="userVO" id="userVOpmp">
	<!-- 
	这里可以对java的类进行映射 也可以映射jdbcType 
	如果jdbcType 要注意是Date(只保存日期) 区别 TimeSTAMP(日期+时间)
	-->
		<parameter property="name" jdbcType="varchar"/>
		<parameter property="email" jdbcType="varchar"/>
	</parameterMap>
	<insert id="createUser" parameterMap="userVOpmp">
	insert into u1(name,email)
	values(?,?)
	</insert>

Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");
SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
User u =new User();
u.setName("www.0431.la");
u.setEmail("bb@0431.la");
sqlMap.insert("user.createUser",u);

需要注意
类型必须一致 保证语句的参数顺序正确

3 Like 模糊查询
这个比价简单 和正常查询几乎没有什么变化 主不过标识符由#换成$
<select id="selectLikeName" parameterClass="java.lang.String" resultClass="userVO">
select * from u1 where name like '%$value$%'
</select>

Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");
SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
List list = sqlMap.queryForList("user.selectLikeName", "a");
System.out.println(list.size());


4 批量及事物处理
这里的设置不需要更改xml
Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");
SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
//开启事物	
sqlMap.startTransaction();
//开启批次操作
sqlMap.startBatch();
User user = new User();
user.setName("aaaaa");
User2 user2 = new User2();
user2.setName("bbbbb");
sqlMap.insert("user.createUser",user);
sqlMap.insert("user2.createUser",user2);
//执行批次操作
sqlMap.executeBatch();
//提交事物
sqlMap.commitTransaction();
分享到:
评论
1 楼 bo_hai 2011-06-29  
总结的真好呀!

相关推荐

    iBATIS-SqlMaps-2-Tutorial_cn.pdf

    iBATIS-SqlMaps-2-Tutorial_cniBATIS-SqlMaps-2-Tutorial_cn.pdf.pdfiBATIS-SqlMaps-2-Tutorial_cn.pdfiBATIS-SqlMaps-2-Tutorial_cn.pdf

    iBATIS-SqlMaps-2-快速入门教程.docx

    iBATIS-SqlMaps-2-快速入门教程 iBATIS-SqlMaps-2 是一个 Java 持久层框架,用于简化 Java 应用程序中的数据库交互。快速入门教程旨在帮助开发者快速了解 iBATIS-SqlMaps-2 的使用和配置。 知识点1:iBATIS-Sql...

    ibatis-sqlmaps-2_cn

    在`ibatis-sqlmaps-2_cn.pdf`中,你将看到如何定义SQL语句,包括简单查询、插入、更新和删除操作,以及如何处理结果集映射。此外,教程还会涵盖动态SQL,这是IBATIS的一大亮点,允许在运行时构建和修改SQL语句,提高...

    ibatis-3-core-3.0.0.242.jar.zip

    ibatis-3-core-3.0.0.242.jar.zipibatis-3-core-3.0.0.242.jar.zipibatis-3-core-3.0.0.242.jar.zipibatis-3-core-3.0.0.242.jar.zipibatis-3-core-3.0.0.242.jar.zip

    apache开源项目源码ibatis-3-core-src-3.0.0.227(ibatis框架java源程序)

    apache开源项目源码ibatis-3-core-src-3.0.0.227 ibatis框架java源程序 spring,struts,hibernate,ibatis,框架源码 各种ibatis框架应用源码,你会从中得到意想不到的效果! apache开源组织开发的开源项目源码,其...

    iBATIS-SqlMaps-2-Tutorial_cn

    iBATIS,作为Java世界中的一个轻量级持久层框架,它提供了一种将SQL查询与Java代码解耦合的方法,使得开发人员可以更灵活地处理数据库操作。这本书的中文版,对于中国开发者来说,无疑降低了学习的门槛,提高了学习...

    ibatis-3-core-3.0.0.200

    ibatis-3-core-3.0.0.200

    ibatis-3-core-3.0.0.242.zip

    ibatis-3-core-3.0.0.242.zip ibatis-3-core-3.0.0.242.zip ibatis-3-core-3.0.0.242.zip ibatis-3-core-3.0.0.242.zip

    iBATIS-SqlMaps-2_cn中文文档

    iBATIS-SqlMaps-2_cn中文文档

    Ibatis基本配置---[环境搭建

    Ibatis基本配置---[环境搭建

    iBATIS-SqlMaps-2_cn1.pdf

    iBATIS-SqlMaps ibatis入门教程,教你如何做配置ibatis

    iBATIS-SqlMaps-2 PDF文档资料(日文)

    iBATIS-SqlMaps-2 是一套针对Java开发者的开源持久层框架,它提供了一种将SQL语句和Java代码分离的方式,使得开发者可以更灵活地处理数据库操作。本资料集为日文版,旨在帮助熟悉日语的开发者了解和掌握iBATIS-Sql...

    iBATIS-SqlMaps-2 PDF文档资料中文

    iBATIS-SqlMaps-2 是一套针对Java开发者的开源持久层框架,它提供了一种将SQL查询与Java代码解耦合的方式,使得开发者能够更方便地管理数据库操作。这个PDF文档资料集全面介绍了如何使用iBATIS-SqlMaps-2进行数据库...

    iBATIS-SqlMaps-2_cn.pdf

    《iBATIS-SqlMaps-2_cn.pdf》是关于iBATIS SQL Maps的中文版文档,它详尽地阐述了如何使用SQL Maps来构建数据库驱动的Java应用。iBATIS是一个开源的Java库,它的核心功能是简化Java应用程序与数据库之间的交互,尤其...

    iBATIS-SqlMaps-2_ja.pdf

    ### iBATIS-SqlMaps-2_ja.pdf 相关知识点 #### iBATIS Data Mapper 概览 iBATIS Data Mapper(也称为 SQL Maps)是一个开源框架,它旨在简化与关系数据库交互所需的 Java 代码量。通过使用简单的 XML 配置文件,...

    ibatis入门--对数据库的操作

    【ibatis入门--对数据库的操作】这篇文章主要讲解了如何使用iBatis框架来操作数据库,iBatis是一个轻量级的持久层框架,它将SQL语句与Java代码分离,提高了开发效率和代码的可维护性。以下是文章涉及的关键知识点: ...

    ibatis-3-core-3.0.0.204

    ibatis-3-core-3.0.0.204 最新官方下载版

    ibatis-SqlMaps-开发指南-version 1.0 及 ibatis-SqlMaps-开发指南-version 2

    《iBATIS-SqlMaps-开发指南》是针对iBATIS框架的重要参考资料,分为version 1.0和version 2两个版本。iBATIS是一个Java编程语言中的持久层框架,它允许开发者将SQL语句与Java代码分离,提高了数据访问的灵活性和效率...

    Ibatis 入门经典 实例

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

    iBATIS-SqlMaps-2_cn.rar

    通过学习这个压缩包的内容,开发者可以掌握如何在Java项目中集成和使用iBATIS-SqlMaps-2,从而提高数据库操作的效率和灵活性。此外,了解iBATIS的高级特性如结果映射、缓存机制和动态SQL,可以帮助开发者编写出更加...

Global site tag (gtag.js) - Google Analytics