<?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="Note">
<!--namespacenamespace是该<sqlMap>的命名空间,因为SQL Map映射文件可以有多个,
而对于SQL Map来说所有映射文件都是全局性的。这意味着在SQL Map中的标识只能是惟一的,
利用namespace和标识的全限定名就可以进行区别,前提是,配置文件中的useStatementNamespaces
属性必须设置为true。 -->
<typeAlias alias="note" type="com.pk.po.Note" />
<!- 这个type是全局的命名类 alias相当于type的缩写 这样在后面用到的时候都可以直接用note->
下面是各种类型的MapSql 查询语句
<insert id="insertNote" parameterClass="note">
<!- parameterClass 是参数类型 跟alias是同一个->
<!-resultClass 是返回数据的数据类型->
<![CDATA[
insert into note
(title,author,content) values(#title#,#author#,#content#)
]]>
</insert>
<delete id="deleteNoteById" parameterClass="java.lang.Integer">
<![CDATA[
delete from note where id = #id#
]]>
</delete>
<select id="selectCount" resultClass="java.lang.Integer">
<![CDATA[
select Count(*) from note
]]>
</select>
<select id="selectNoteById" parameterClass="java.lang.Integer"
resultClass="note">
<![CDATA[
select * from note where id = #id#
]]>
</select>
<update id="updateNote" parameterClass="note">
<![CDATA[
update note set content = #content#, author= #author#,title = #title#
where id = #id#
]]>
</update>
<select id="queryNoteByTitle" parameterClass="java.lang.String"
resultClass="note">
<![CDATA[
select * from note where title like concat('%', #title#,'%')
]]>
</select>
<!-拼凑Sql语句->
<select id="queryNote" parameterClass="note" resultClass="note">
select * from note
<dynamic prepend="WHERE">
<isNotNull prepend="AND" property="title">
title = #title#
</isNotNull>
<isNotNull prepend="AND" property="author">
author = #author#
</isNotNull>
<isNotNull prepend="AND" property="content">
content = #content#
</isNotNull>
</dynamic>
</select>
</sqlMap>
ibatis :SqlMapConfig 配置文件详解
ibatis 与Hibernate 一样只不过 Hibernate是全自动化,ibatis 半自动化。ibatis 有比较灵活的空间可以自由写sql语句。
ibatis主要包括
一 sqlMapConfig.xml配置文件,
二 pojo用来与数据库打交道的持久层对象,也是我们通过ibatis要操作的对象。
三 sqlMap.xml配置文件用来自己手动填写sql语句,然后再sqlMapConfig.xml文件中添加这个资源的位置。最后在dao中把参数(也就是pojo)传到该配置文件中。
1.sqlMapConfig.xml配置文件详解:
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" <!--最大Session数-->
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="com.mysql.jdbc.Driver"/>
<property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost/test"/>
<property name="JDBC.Username" value="root"/>
<property name="JDBC.Password" value="wyq"/>
<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="com/wyq/map/userMap.xml"/>
</sqlMapConfig>
JNDI的配置大部分都在应用服务器中进行,所以在ibatis中的配置相对简单
(1)jdbc事务控制的JNDI配置
<transctionManager type="JDBC">
<dataSource type="JNDI">
<property name="DataSource" value="java:comp/env/jdbc/myDataSource"/>
</dataSource>
</transctionManager>
(2)JTA事务控制的JNDI配置
<transctionManager type="JTA">
<property name="UserTransaction" value="java:/ctx/con/UserTransaction"/>
<dataSource type="JNDI">
<property name="DataSource" value="java:comp/env/jdbc/myDataSource"/>
</dataSource>
</transctionManager>
<sqlMap resource="com/wyq/map/userMap.xml"/> 指定了映射文件的位置。与hibernate 中hibernate.cfg.xml 无异
sqlMap节点指定了映射文件的位置。