`

IBatis SQL 映射

阅读更多
IBatis SQL 映射
--------------------
1. 特殊字符
<select id="getPersonsByAge" parameterClass=”int” resultClass="examples.domain.Person">
SELECT *
FROM PERSON
WHERE AGE <![CDATA[  >  ]]>  #value#
</select>

2. SQL片段
<sql id="selectItem_fragment">
FROM items
WHERE parentid = 6
</sql>

<select id="selectItemCount" resultClass="int">
SELECT COUNT(*) AS total
<include refid="selectItem_fragment"/>
</select>

<select id="selectItems" resultClass="Item">
SELECT id, name
<include refid="selectItem_fragment"/>
</select>

3. 序列
<!—Oracle SEQUENCE Example -->
<insert id="insertProduct-ORACLE" parameterClass="com.domain.Product">
      <selectKey resultClass="int" >
              SELECT STOCKIDSEQUENCE.NEXTVAL AS ID FROM DUAL
      </selectKey>
       insert into PRODUCT (PRD_ID,PRD_DESCRIPTION)
       values  (#id#,#description#)
</insert>

<!— Microsoft SQL Server IDENTITY Column Example -->
<insert id="insertProduct-MS-SQL" parameterClass="com.domain.Product">
       insert into PRODUCT (PRD_DESCRIPTION)
       values  (#description#)
      <selectKey resultClass="int" >
              SELECT @@IDENTITY AS ID
      </selectKey>
</insert>

4. 存储过程
<parameterMap id="swapParameters" class="map" >
    <parameter property="email1" jdbcType="VARCHAR" javaType="java.lang.String" mode="INOUT"/>
    <parameter property="email2" jdbcType="VARCHAR" javaType="java.lang.String" mode="INOUT"/>
</parameterMap>
<procedure id="swapEmailAddresses" parameterMap="swapParameters" >
    {call swap_email_address (?, ?)}
</procedure>

5. 模糊查询
SELECT * FROM PRODUCT WHERE PRD_DESCRIPTION LIKE '%$dog$%'

6. 配置Log4j日志
log4j.properties
# Global logging configuration
log4j.rootLogger=ERROR, stdout

# SqlMap logging configuration...
#log4j.logger.com.ibatis=DEBUG
#log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
#log4j.logger.com.ibatis.sqlmap.engine.cache.CacheModel=DEBUG
#log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientImpl=DEBUG

#log4j.logger.com.ibatis.sqlmap.engine.builder.xml.SqlMapParser=DEBUG
#log4j.logger.com.ibatis.common.util.StopWatch=DEBUG
#log4j.logger.java.sql.Connection=DEBUG
#log4j.logger.java.sql.Statement=DEBUG
#log4j.logger.java.sql.PreparedStatement=DEBUG
#log4j.logger.java.sql.ResultSet=DEBUG

# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n


7. 动态SQL映射

<select id="dynamicGetAccountList"
cacheModel="account-cache"
resultMap="account-result" >
select * from ACCOUNT
<isGreaterThan prepend="and" property="id" compareValue="0">
where ACC_ID = #id#
</isGreaterThan>
order by ACC_LAST_NAME
</select>

上面的例子中,根据参数 bean“id”属性的不同情况,可创建两个可能的语句。如果参
数“id”大于 0,将创建下面的语句:
select * from ACCOUNT where ACC_ID = ?
或者,如果“id”参数小于等于 0,将创建下面的语句:
select * from ACCOUNT

8. 示例

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"
		lazyLoadingEnabled="true" 
		enhancementEnabled="true"
		errorTracingEnabled="true"
		maxRequests="32" 
		maxSessions="10"
		maxTransactions="5"
		useStatementNamespaces="true"
	/>
	<transactionManager type="JDBC">   <!-- 定义了ibatis的事务管理器有3中(JDBC,JTA,EXTERNAL) -->
		<dataSource type="SIMPLE">   <!-- type属性指定了数据源的链接类型,也有3种类型(SIMPLE,DBCP,JNDI) -->
			<property name="JDBC.Driver" value="org.hsqldb.jdbcDriver" />
			<property name="JDBC.ConnectionURL" value="jdbc:hsqldb:hsql://localhost/botoa" />
			<property name="JDBC.Username" value="sa" />
			<property name="JDBC.Password" value="" />
			<property name="Pool.MaximumActiveConnections" value="10" />   <!-- 连接池维持的最大容量 -->
			<property name="Pool.MaximumIdleConnections" value="5" />   <!-- 连接池允许挂起的最大连接 -->
			<property name="Pool.MaximumCheckoutTime" value="120000" />   <!-- 连接被某个任务所允许占用的最大时间 -->
			<property name="TimeToWait" value="500" />   <!-- 线程允许等待的最大时间 -->
		</dataSource>
	</transactionManager>
	<sqlMap resource="cn/bisoft/java/webapp/pojo/userMap.xml" />
</sqlMapConfig>
 



userMap.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>

	<typeAlias alias="User" type="cn.bisoft.java.webapp.pojo.User" />

	<select id="getUsers" parameterClass="java.lang.Integer"
		resultClass="User">
	    select id, name, sex 
	    from user
	    <dynamic prepend="WHERE"> 
			<isParameterPresent prepend="AND"> 
				id = #value# 
			</isParameterPresent>
		</dynamic> 
	    
	</select>

	<select id="queryUserByCondition" parameterClass="java.lang.String"
		resultClass="User">
	    <![CDATA[
	    select id,name,sex 
	    from user 
	    where name like '%$name$%'
	    ]]>
	</select>

	<update id="updateUser" parameterClass="User">
        <![CDATA[
            update user set name=#name#,sex=#sex# where id=#id#
        ]]>
	</update>

	<insert id="insertUser" parameterClass="User">
		insert into
		user(name,sex) values(#name#,#sex#)
    </insert>

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

</sqlMap>
 



UserDaoImpl.java

package cn.bisoft.java.webapp.dao.impl;

import java.sql.SQLException;
import java.util.List;

import cn.bisoft.java.webapp.dao.UserDAO;
import cn.bisoft.java.webapp.pojo.User;
import cn.bisoft.java.webapp.util.IbatisUtil;

public class UserDAOImpl implements UserDAO {

	public void add(User user) {
		try {
			IbatisUtil.getClient().update("insertUser", user);
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	public void delete(Integer id) {
		try {
			IbatisUtil.getClient().delete("deleteUser", id);
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	public void update(User user) {
		try {
			IbatisUtil.getClient().update("updateUser", user);
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	@SuppressWarnings("unchecked")
	public List<User> queryAll() {
		List<User> userList = null;
		try {
			userList = IbatisUtil.getClient().queryForList("getUsers");
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		for(User user : userList)
		{
			System.out.println(user);
		}
		
		return userList;
	}
	
	@SuppressWarnings("unchecked")
	public List<User> queryByName(String name) {
		List<User> userList = null;
		try {
			userList = IbatisUtil.getClient().queryForList("queryUserByCondition", name);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		for(User user : userList)
		{
			System.out.println(user);
		}
		
		return userList;
	}

	public User query(Integer id) {
		User user = null;
		try {
			user = (User) IbatisUtil.getClient().queryForObject("getUsers", id);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		System.out.println(user);
		
		return user;
	}

}




User.java

package cn.bisoft.java.webapp.pojo;

public class User {
	private Integer id;

	private String name;
	
	private Integer sex;
	
	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 Integer getSex() {
		return sex;
	}

	public void setSex(Integer sex) {
		this.sex = sex;
	}

	@Override
	public String toString() {
		return "id=" + id + " name=" + name + " sex=" + sex;
	}
	
}












0
0
分享到:
评论

相关推荐

    ibatis SQL映射文件、DAO、model自动生成工具源码

    Ibatis 是一款轻量级的Java持久层框架,它提供了SQL映射文件和基于XML或注解的SQL语句配置,使得开发者可以更加灵活地控制SQL的编写,从而避免了传统的JDBC代码中的大量模板式代码。这个"ibatis SQL映射文件、DAO、...

    ibatis sql生成工具

    Ibatis,作为一个轻量级的持久层框架,与传统的ORM(对象关系映射)工具相比,提供了更为灵活的SQL映射机制,使得开发者可以直接编写SQL语句,从而更好地掌控数据库查询性能。 该SQL生成器被设计成Web应用的形式,...

    ibatis常用sql语句

    标题与描述概述的知识点主要集中在iBATIS框架的SQL映射技术上,特别是针对不同类型的输入参数如何在iBATIS中构建SQL语句。以下是对这些知识点的详细展开: ### iBATIS SQL映射技术概览 iBATIS是早期流行的Java持久...

    SqlmapGenerator:一个IntelliJ Idea插件,旨在为您生成ibatis sql映射,从而节省时间,节省金钱,挽救生命

    SqlmapGenerator是一款专为IntelliJ IDEA用户设计的插件,其主要功能是自动生成iBatis SQL映射文件,从而极大地提高了开发效率。在Java Web开发中,iBatis作为一个优秀的持久层框架,常常被用来处理数据库操作,而...

    Mygeneration_1309_20081006—IBatis_SQL映射+实体模板

    4. **SQL Mapping映射文件**:在IBatis.NET中,SQL Mapping文件是XML格式的,它定义了SQL语句、存储过程以及它们与实体类之间的映射关系。通过这种方式,开发者可以在不修改业务代码的情况下,调整数据库查询逻辑。 ...

    iBATIS-SqlMaps,ibatis映射文件

    SqlMap.xml文件则是具体的SQL映射文件,它是iBATIS的核心,定义了SQL语句、结果映射、参数映射等。映射文件中的每个元素都代表了一个数据库操作,如查询、插入、更新或删除。例如,元素用于定义一个查询,它可以包含...

    ibatis总结 ibatis ibatis ibatis ibatis

    Ibatis的主要特点是通过XML或注解定义SQL映射文件,将SQL语句与Java对象绑定。例如,`&lt;select&gt;`标签用于定义查询语句,`&lt;insert&gt;`、`&lt;update&gt;`和`&lt;delete&gt;`分别对应增删改操作。在SQL映射文件中,可以使用动态SQL来...

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

    《iBATIS-SqlMaps-2.pdf》可能是关于iBATIS SQL映射器的详细指南,它会介绍如何编写SQL Map配置文件,这些文件定义了数据库查询和事务处理。SQL Maps是iBATIS的核心部分,它们将数据库查询与Java对象绑定,使得...

    ibatis sql 语句的编写

    Ibatis是一个基于Java的持久层框架,它支持定制化SQL、存储过程以及高级映射。Ibatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索,可以与简单的XML或注解进行配置和原始映射,将接口和Java的POJOs...

    iBATIS SQL Maps 开发指南

    它的核心功能在于提供SQL映射文件,将数据库操作(增删查改)与业务逻辑代码解耦,提高代码的可读性和可维护性。SQL Maps是这些映射文件的集合,定义了如何将Java对象与数据库表之间的映射关系以及如何执行SQL语句。...

    ibatis 开发指南 和 iBATIS-SqlMaps两本图书

    4. **Mapper XML文件**:解析SQL映射文件的结构,包括定义SQL语句、结果映射、参数映射等。 5. **动态SQL**:讲解如何使用iBATIS的动态元素来构建灵活的SQL语句,以应对复杂的查询需求。 6. **API使用**:介绍...

    CodeSmith IBatis1.92模板

    IBatis的核心功能包括动态SQL、事务管理以及SQL映射文件,这些在开发过程中经常需要手动编写,而使用CodeSmith生成器,可以自动化这个过程。通过定制模板,开发者可以定义如何根据数据模型自动生成Mapper接口、...

    iBATIS SQL Maps 入门教程.rar

    iBATIS SQL Maps 是一款优秀的数据持久层框架,它为Java开发者提供了强大的SQL映射功能,使得数据库操作变得更加简单和灵活。本入门教程将引导您逐步掌握iBATIS的核心概念和使用方法,让数据库交互不再成为开发过程...

    iBATIS SQL Maps指导

    iBATIS是一个轻量级的数据访问框架,它允许开发者将SQL语句直接写在XML配置文件中,从而实现对象与数据库的映射。 在开始使用iBATIS之前,首先理解SQL Map架构的灵活性至关重要。它并不限制数据库模型或对象模型的...

    ibatis的sql-map dtd

    Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责SQL映射,使得开发者能够将SQL语句与Java代码分离,从而更好地管理数据库操作。在Ibatis中,`sql-map`和`sql-map-config`是两个重要的XML配置文件,...

    ibatis sqlserver代码自动生成

    在IT行业中,数据库操作是开发工作中的重要环节,而Ibatis作为一款优秀的持久层框架,为Java开发者提供了灵活的SQL映射功能,减轻了手动编写SQL和操作结果集的负担。SQLServer则是一款广泛使用的商业关系型数据库...

Global site tag (gtag.js) - Google Analytics