注意:
ibatis容器的会自动去加载javaBean的无参构造方法,所有你在建立bean的时候如果要建立有参的构造方法时,要注意保证一定要有无参的构造方法.
重要提示:虽然2.0向后兼容,但强烈建议使用parameterClass(除非没必要)。
通过提供parameterClass,您可以获得更好的性能,因为如果框架事先知道这个类,就可以优化自身的性能。
如果不指定parameterClass参数,任何带有合适属性(get/set方法)的Java Bean都可以作为输入参数。
注意resultMap支持“select *”,并不要求定义ResultSet所有返回字段的映射。
<![CDATA[ ..... ]]>
通过<![CDATA[……]]>节点,可以避免SQL 中与XML 规范相冲突的字符对
XML映射文件的合法性造成影响。
使用statement 定义所有操作固然可以达成目标,但缺乏直观性,建议在实际
开发中根据操作目的,各自选用对应的节点名加以申明。一方面,使得配置文件
更加直观,另一方面,也可借助DTD对节点申明进行更有针对性的检查,以避免
配置上的失误。
动态查询,多条件参数:(注意应用的地方)一般在多条件查询,可以无值.
<!-- 动态多参数查询,这种方式会用得比较多,其实也很简单 -->
<resultMap id="StudentResult" class="Student">
<result property="sid" column="sid" />
<result property="name" column="sname" />
<result property="major" column="major" />
<result property="birth" column="birth" />
<result property="score" column="score" />
</resultMap>
<!-- 利用Map来传入多个参数,下面的parameterMap也可以不用,不用是要与Map的Key值一样. -->
<parameterMap id="dynamic_studentMap" class="java.util.Map">
<parameter property="name1" />
<parameter property="major" />
</parameterMap>
<select id="getStudentDynamic" parameterMap="dynamic_studentMap"
resultMap="StudentResult" cacheModel="studentCache">
select * from Student
<dynamic prepend="where">
<isNotEmpty prepend="AND" property="name">
(sname like '%$name1$%')
</isNotEmpty>
<isNotEmpty prepend="AND" property="major">
(major like '%$major$%')
</isNotEmpty>
</dynamic>
</select>
//比较复杂一点的一个例子
<statement id="dynamicGetAccountList" resultMap="account-result" >
select * from ACCOUNT
<dynamic prepend="WHERE">
<isNotNull prepend="AND" property="firstName">
(ACC_FIRST_NAME = #firstName#
<isNotNull prepend="OR" property="lastName">
ACC_LAST_NAME = #lastName#
</isNotNull>)
</isNotNull>
<isNotNull prepend="AND" property="emailAddress">
ACC_EMAIL like #emailAddress#
</isNotNull>
<isGreaterThan prepend="AND" property="id" compareValue="0">
ACC_ID = #id#
</isGreaterThan>
</dynamic>
order by ACC_LAST_NAME
</statement>
传入多个多参数时有二种方法:
1.第一种直接传进去一个JavaBean,
<insert id="insertStudent" parameterClass="Student">
insert into Student(sid,sname,major,birth,score)
values(#sid#,#name#,#major#,#birth#,#score#)
<!-- insert into
Student values(#sid#,#name#,#major#,#birth#,#score#)都可以 -->
</insert>
2.第二种方式传进去一个MAP
注意:#sid# #name#的名字要与Map的KEY值一样,否则会找不到MAP所对应的值.
<select id="getStudent" parameterClass="java.util.Map"
resultMap="StudentResult" cacheModel="studentCache">
select * from STUDENT where sid=#sid# and sname=#name#
</select>
下面的一种方法要注意的问题,下面占位符的顺序要对应,否则结果不可预测.
<parameterMap id="studentMap" class="java.util.Map" >
<parameter property="sid"/>
<parameter property="name" />
</parameterMap>
<select id="getStudent" parameterClass="java.util.Map"
parameterMap="studentMap"
resultMap="StudentResult" cacheModel="studentCache">
select * from STUDENT where sid=? and sname=?
</select>
中WHERE 之后的语句是在dynamic 节点中所定义,因此以dynamic 节点的
prepend设置("WHERE")作为前缀,而其中的”AND”,实际上是address属性所对
应的isNotEmpty节点的prepend设定,它引领了对应节点中定义的SQL子句。至于
name属性对应的isNotEmpty节点,由于ibatis会自动判定是否需要追加prepend
前缀,这里(name like #name#)是WHERE 子句中的第一个条件子句,无需AND 前
缀,所以自动省略。
resultMap的三种写法:
1.隐式的.
2.显式的.当输出的结果集放到一个JAVAbEAN里面时.并且表名与此同时BEAN的属性名不一样时,显式地进行表字段名与Bean名的映射关系.
<resultMap id="StudentResult" class="Student">
<result property="sid" column="sid" />
<result property="name" column="sname" />
<result property="major" column="major" />
<result property="birth" column="birth" />
<result property="score" column="score" />
</resultMap>
3.在Sql语句里面显式的映射表字段名与Bean名的对应关系.
<select id="getPerson" resultClass="PersonBean">
SELECT
sid as name,
sname as name,
...
FROM PERSON
</select>
多表查询:
<!-- 1对多的关系的另一种方式,利用的是Map来返回结果集,
这种方式更简单也符合我们来写SQL语句的习惯.
当然这里也可以定义ResultMap -->
<select id="getStudentAndCourseOfMap"
resultClass="java.util.HashMap" parameterClass="int">
select student.sid,course from Student,course
where Student.sid=Course.sid
and student.sid=#sid#
</select>
<!-- 1对多关联查询,下面这种方式要注意,course是Student里面的一个属性,
并且course在Student类里面是一个List<Course>
-->
<resultMap id="StudentResultCourse" class="Student">
<result property="sid" column="sid" />
<result property="name" column="sname" />
<result property="major" column="major" />
<result property="birth" column="birth" />
<result property="score" column="score" />
<result property="course" column="sid"
select="getCourseByStudentId" />
</resultMap>
<select id="getStudentCourse" resultMap="StudentResultCourse"
parameterClass="int">
select * from Student where sid=#sid#
</select>
<select id="getCourseByStudentId" parameterClass="int"
resultClass="Course">
<![CDATA[
select
sid,
course
from course
where sid = #sid#
]]>
</select>
<!-- 1对多的关系的另一种方式,利用的是Map来返回结果集,
这种方式更简单也符合我们来写SQL语句的习惯.
当然这里也可以定义ResultMap -->
<select id="getStudentAndCourseOfMap"
resultClass="java.util.HashMap" parameterClass="int">
select student.sid,course from Student,course
where Student.sid=Course.sid
and student.sid=#sid#
</select>
动态查询:
没有合适的资源?快使用搜索试试~ 我知道了~
ibatis实例,mysql应用举例
共39个文件
xml:10个
java:9个
class:9个
需积分: 6 13 下载量 116 浏览量
2008-11-30
11:18:16
上传
评论
收藏 32KB RAR 举报
温馨提示
ibatis实例,ibatis实例,mysql应用举例,大家快来看。
资源推荐
资源详情
资源评论
收起资源包目录
ibatis例子.rar (39个子文件)
ibatis例子
ibatesdemo
.project 855B
.settings
org.eclipse.wst.common.component 530B
org.eclipse.jdt.core.prefs 330B
org.eclipse.wst.common.project.facet.core.xml 229B
org.eclipse.jst.common.project.facet.core.prefs 210B
src
ibatismore
Course.java 468B
SqlMapConfig.xml 892B
SqlMap.properties 94B
Student.xml 4KB
IbatisStudentTest.java 4KB
Student.java 1KB
IStudentDao.java 1KB
TT.java 2KB
sure
SqlMapConfig.xml 890B
SqlMap.properties 94B
Student.xml 2KB
IbatisStudentTest.java 2KB
Student.java 910B
IStudentDao.java 392B
TT.java 1KB
build
classes
WebContent
WEB-INF
web.xml 637B
build
classes
ibatismore
IStudentDao.class 1KB
Course.class 1018B
TT.class 3KB
SqlMapConfig.xml 892B
SqlMap.properties 94B
Student.xml 4KB
IbatisStudentTest.class 5KB
Student.class 2KB
sure
IStudentDao.class 515B
TT.class 1KB
SqlMapConfig.xml 890B
SqlMap.properties 94B
Student.xml 2KB
IbatisStudentTest.class 3KB
Student.class 2KB
lib
META-INF
MANIFEST.MF 39B
.classpath 738B
要点.txt 6KB
共 39 条
- 1
资源评论
AAABVV
- 粉丝: 1
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功