那一夜....
风在刮,雨在下

两者区别:mybatis简化了编码的过程,不需要去写dao的实现类,直接写一个dao的接口,再写一个xml配置文件,整个mybatis就配置好了,也就是数据库就连接好了,然后在service里面直接调用dao就可以了,但是ibatis则不可以,必须要写dao的实现类,再写个return getSqlMapClientTemplate().queryForList()神马的,mybatis是ibatis的升级版本。

    在ibatis2.x中我们需要在DAO的实现类中指定具体对应哪个xml映射文件, 而Mybatis实现了DAO接口与xml映射文件的绑定,自动为我们生成接口的具体实现,使用起来变得更加省事和方便。这可以说是Mybatis最重要的改进。

用法:iBATIS

"age" column="user_age"/>
    <result property="houseList" column="id" select="House_PLAT.queryByUserId"/>  
  </resultMap>
 
 <!-- sql标签定义多个sql语句可能用到的公共字段 -->
  <sql id="insertColumn">
      user_name,
      password,
      user_age
  </sql>
  
  <sql id="userColumn">
      id,
      user_name,
      password,
      user_age
  </sql>
  <sql id="insertSql">
  #username#,
  #password#,
  #age#
  </sql>
  
    
  <!-- parameterClass:定义的insert的时候参数所对应的类的全路径 ,可以使用别名
 #:如果传递的是实体的话,对应的是实体里面加了getter/setter方法的属性
 -->
 <insert id="saveUsers" parameterClass="User">
  insert into t_user(
      <include refid="insertColumn"/>
  ) values (
       <include refid="insertSql"/>
  )
 </insert>
 
 <select id="queryUsersById" resultMap="userMap" parameterClass="int">
    select 
    <include refid="userColumn"/>
    from t_user where id = #id# 
 </select>
  
  <!-- resultMap/resultClass:用来指定返回的数据泛型
  resultMap:如果实体的属性和数据库表的字段不是一一对应的关系
            需要通过resultMap配置字段映射关系
            
    resultClass:如果实体的属性和数据库表的字段是一一对应关系        
   -->
 <select id="queryAllUsersList" resultMap="userAllMap">
    select <include refid="userColumn"/> from t_user
 </select>

 <!-- resultClass:指定返回值的类型, 如果返回的是对象,对应的是对象的类
     如果返回的是集合,对应的集合的泛型
     
     resultMap:自定义的查询结果集,用于封装查询数据
 -->
 <select id="login" resultMap="userMap" parameterClass="User">
     select <include refid="userColumn"/> from t_user u where user_name = #username# and password = #password#
 </select>
 
 <select id="queryUser" resultClass="User" parameterClass="int">
  select <include refid="userColumn"/> from t_user where id=#id#
 </select>
 
 
 <select id="queryHouse" resultClass="com.baway.user.model.House" parameterClass="int">
  select * from t_house where userid = #id#
 </select>


 <update id="updateUsers" parameterClass="User">
  update t_user set user_name = #username#,password=#password#,user_age=#age#
  where id=#id#
 </update>

 <delete id="deleteUsersById" parameterClass="int">
  delete from t_user where id=#id#
 </delete>
 
</sqlMap>

mybatis:

<mapper namespace="com.yksc.b2c.books.mapper.ISBookMapper ">

    <resultMap type="SBook" id="sBookResultMap">
        <id property="id" column="id" />
        <result property="title" column="title" />
        <result property="author" column="author" />
        <result property="total" column="total" />
        <result property="price" column="price" />
        <result property="isbn" column="isbn" />
        <result property="publisher" column="publisher" />        
    </resultMap>


    <!-- 查询班级list -->
    <select id="findAllBook" resultMap="sBookResultMap">
        SELECT * from sbook;
    </select>

    <insert id="saveBook" parameterType="SBook">
        <selectKey keyProperty="id" resultType="int" order="BEFORE">
            SELECT LAST_INSERT_ID() AS VALUE
        </selectKey>
        
        INSERT INTO sbook(
         title
        ,author
        ,total
        ,price
        ,isbn
        ,publisher
        )
            VALUES(
            #{title}
            ,#{author}
            ,#{total}
            ,#{price}
            ,#{isbn}
            ,#{publisher}
            )
        
    </insert>
    <select id="findBookById" parameterType="int" resultMap="sBookResultMap">
        SELECT * from sbook where id = #{id} ;
    </select>
    <update id="updateBook" parameterType="int">   
        update sbook set title = #{title}, author = #{author}, 
        total = #{total}, price = #{price}, isbn = #{isbn}, publisher = #{publisher} 
        where id = #{id}   
    </update> 
    <delete id="deleteBook" parameterType="int">   
        delete from sbook where id = #{id}   
    </delete>  

</mapper>

 

posted on 2014-11-20 14:57  暮雨倾晨  阅读(622)  评论(0)    收藏  举报