ibatis学习1

原创 2012年03月28日 10:58:04

摘《ibatis开发指南》

1.SQL MAP工作原理

将一个对象作为参数,为sql修改语句和查询语句设定参数值

1).执行mapped statement 。sql map框架将创建一个preparedStatement实例,用参数对象为preparedstatement实例设定参数,执行preparedStatement并从resultset中创建结果对象

2).执行sql的更新数据库语句时,返回受影响的数据行数。执行查询语句时,将返回一个结果对象或对象的集合。和参数对象一样,结果对象可以使javabean,map实现和基本数据类型的包装类

 

2.sql map配置文件(包括sqlmapconfig.xml 和sql map映射文件)

1)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="sqlmap.properties"/>
          <!--sql map配置文件拥有唯一的<properties>元素 用于在配置文件中使用标准的java属性文件(name=value)
                           这样做后,在属性文件中定义的属性可以作为变量在sql map配置文件及其所包含的所有sql map映射文件中引用。例:
                           属性文件中包含:driver=org.hsqldb.jdbcDriver
                            sql map配置文件及其每个映射文件都可以使用占位符${driver}来代表值org....
                            <property name="JDBC.Driver" value="${driver}"/>
           -->

          <!--
         <typeAlias>元素为一个较长的,全限定类名指定一个较短的别名
                           sql map配置文件预定义了几个JDBC别名等
          -->
        <typeAlias alias="String" type="java.lang.String" />
          <!--为sql map配置事务管理服务  type指定所使用的事务管理器类型
                         jdbc,jta,external
                       jdbc通过常用的connection commit()和rollback()方法,让jdbc管理事务
             -->
         <transactionManager type="JDBC" >
           <!--
                             <datasource>是<transactionManager>的一部分,为sql map数据源设置了一系列参数
             -->
           <dataSource type="SIMPLE">
                                       <property name="JDBC.Driver" value="${jdbc.driverClass}" />  
                                      <property name="JDBC.ConnectionURL" value="${jdbc.url}" /> 
                                      <property name="JDBC.Username" value="${jdbc.username}" />  
                                      <property name="JDBC.Password" value="${jdbc.password}" />  
             </dataSource>

          <!---

                     注:sqlmap.properties内容:

                            jdbc.driverClass=oracle.jdbc.driver.OracleDriver
                            jdbc.url=jdbc:oracle:thin:@oracle服务器ip:1521:unieap
                            jdbc.username=scott
                            jdbc.password=tiger

           -->
           </transactionManager>
          <!--
                  <sqlMap>元素用于用于包括sql map映射文件和其他的sql map配置文件
                   每个sqlmapclient对象使用的所有的sql map映射文件都要在此声明,必需在这里指定
                 所有的sqlmap文件

           -->
           <sqlMap resource="com/zzl/dao/sql/User_tab.xml" />
</sqlMapConfig>

2)sql map映射文件

一个sql map xml映射文件可以包含任意多个mapped statement,parameter map和result map
sqlmap的名称是全局的,所有的sqlmap文件中的名称必须唯一

sql map的核心概念是 mapped statement 。mapped statement可以使用任意的sql语句
并拥有parame map(输入)和result map(输出)

<?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_tab">
            <typeAlias alias="String" type="java.lang.String" />

             <typeAlias alias="user_tab" type="com.zzl.entity.User_tab">

             <!--resultClass和resultMap等具体内容  ibatis学习2将在下一节讲到-->  
            <select id="login" parameterClass="user_tab" resultClass="user_tab">
                       select user_name, user_pwd, user_is_admin from user_tab where user_name=#user_name# and user_pwd=#user_pwd#
            </select>
  </sqlMap>

 

 

ibatis学习之道:iBatis简单入门教程

iBatis 简介: iBatis 是apache 的一个开源项目,一个O/R Mapping 解决方案,iBatis 最大的特点就是小巧,上手很快。如果不需要太多复杂的功能,iBatis 是能够满...
  • u011511429
  • u011511429
  • 2013年10月03日 16:04
  • 1421

sql,ibatis文件不允许在where后添加1=1这样的无用条件,where可以写在prepend属性里

不允许在where后添加1=1这样的无用条件,where可以写在prepend属性里,如:    错误的写法: select count(*)  from BD_CONTRACT t where ...
  • xieyuntestShow
  • xieyuntestShow
  • 2011年12月09日 14:34
  • 2778

解决IBatis中的多对一映射n+1问题

背景: 一个存在多对一的映射的表结构,比如视频和视频上传者,目前想取出最受欢迎的视频并要求显示视频的上传者的名字,传统的做法往往会存在n+1问题,对性能有些影响在IBatis中如何做?马上进入实战 配...
  • daryl715
  • daryl715
  • 2007年08月28日 00:34
  • 1749

Ibatis2.3.4的一个bug

java.lang.ClassCastException: com.chat.upgrade.domain.ClientFile cannot be cast to java.lang.String ...
  • bruce128
  • bruce128
  • 2014年07月22日 21:00
  • 1278

ibatis中的limit 1

意思是只需要一条记录 避免全表扫描
  • afeichuanqi
  • afeichuanqi
  • 2016年12月07日 11:01
  • 273

ibatis 实现一对一和一对多

写在前面的首先你得要了解ibatis框架我就不说了。推荐你看看 《iBATIS-SqlMaps-2_cn.pdf》  一。javaBean____________________________Adm...
  • KissEveryone
  • KissEveryone
  • 2008年08月24日 18:49
  • 3308

ibatis学习记录(1)

这一两个星期是学期结束的时候,也是各个项目交的时候,于是大忙特忙之下,人的身体状况也不佳。而且为了machine learning,还熬了在墨尔本的第一次夜。直到现在都还没怎么缓过来。还好,现在闲下来...
  • featheast
  • featheast
  • 2008年10月31日 06:18
  • 972

iBatis终于出了2.0.9,解决了N+1查询问题。

新年新气象,庆祝。待我试用。 作者给出的这个n+1 select解决方案,是针对一对多的,他认为一对一内联类属性的映射,通过视图select和lazyload,已经可以方便地解决,所以着重解决的是1:...
  • _chage
  • _chage
  • 2005年01月10日 11:09
  • 3244

ibatis example的用法

example Class 使用(可以使用逻辑运算的结合律简化where条件) 代码: TestTableExample example = new TestTableExample(); ex...
  • u013850047
  • u013850047
  • 2016年01月18日 15:13
  • 907

IBATIS动态SQL(1)

转:IBATIS动态SQL       直接使用JDBC一个非常普遍的问题就是动态SQL。使用参数值、参数本身和数据列都是动态SQL,通常是非常困难的。典型的解决办法就是用上一堆的IF-...
  • cs408
  • cs408
  • 2015年05月25日 20:46
  • 483
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ibatis学习1
举报原因:
原因补充:

(最多只允许输入30个字)