mybaties复习笔记

来源:互联网 发布:cms色彩管理系统 编辑:程序博客网 时间:2024/06/18 17:09

Mybatis

1.  什么是mybatis?

特点难度中,速度中

 是apache 中的一个开源项目(ibatis)改进

2.  需要另个配置文件,mybatis.xml,和一个实体映射文件

和hibernate一样,mybatis.xml 配置数据库的连接,实体映射文件也包括里面,数据库的具体配置也可以放在单独一个配置文件中。

唯一的不同的是,实体映射文件,不仅是实体映射文件,还是配置sql文件,没有表名的配置,而是在配置sql语句中找到

3.  如果sql语句中跟参数的话,如果是一个实体,则跟这类的类路径,则配置sql语句时写#{属性值}

4.   分页查询

Mysql

 Limit

Oracle

Select xx.*

From(

Select rownum id,emp.*

From emp

Where name=’xx’

And rownum<4

)xx

Where id>0

5.  动态sql

<selectid="selectPageListUseDyc"parameterType="page"resultMap="supplierResultMap">

    select * from supplier

    <where>

    <if test="paramEntity.supName!=null">and sup_name like#{paramEntity.supName}</if>

    <if test="paramEntity.supAddress!=null">and sup_address like#{paramEntity.supAddress}</if>   

    </where>

     limit#{start},#{rows}

  </select>

 

6.  mybatis开发步骤

导入jar包 mybatis包  数据库包

实体映射关系配置文件,mybatis配置文件

 

7.  一对一映射

实体 两方都包括

其中一方有个外键

 例如

 Public Student(){

private Integer id;

   private String name;

privateCard card; }

 

Public  Card(){

private Integer id;

   private String name;

}

配置文件

  <mappernamespace="studentNamespace">

   <resultMap type="cn.itcast.javaee.mybatis.one2one.Student"id="studentMap">

      <id property="id"column="id"/>

      <result property="name" column="name"/>

      <associationproperty="card"resultMap="cardNamespace.cardMap"/>

   </resultMap>

   <select id="findById" parameterType="int"resultMap="studentMap">

      select s.id,s.name,c.id,c.num

      from students s inner join cards c

      on s.cid = c.id

      and s.id = #{id}

   </select>

</mapper>

 

 

8.  一对多映射

同上

查询那些字段,看那个实体包括这个字段,就在那个实体配置文件中配置,写sql,如果实体中没有这个字段,需要引用其它类

  

9.  多对多映射

同上

分成三个表去实现,两个一对多关系

10.配置文件的详解

<mappernamespace="cn.itcast.javaee.mybatis.app09.Student">

 

    

     <resultMaptype="cn.itcast.javaee.mybatis.app09.Student"id="studentMap">

         <id property="id"column="id"/>

         <result property="name"column="name"/>

         <result property="sal"column="sal"/>

     </resultMap>

 

 

 

 

     <!-- 增加学生 -->

     <insert id="add"parameterType="cn.itcast.javaee.mybatis.app09.Student">

         insert into students(id,name,sal)values(#{id},#{name},#{sal})

     </insert>

    

    

    

     <!-- 根据ID查询学生

          如果参数不是一个实体的话,只是一个普通变量,例如:int,double,String

          这里的#{中间的变量名可以随便写},不过提倡就用方法的形参

      -->

     <select id="findById"parameterType="int"resultType="cn.itcast.javaee.mybatis.app09.Student">

         select id,name,sal from students whereid = #{id}

     </select>

    

     <!-- 查询所有学生

          理论上resultType要写List<Student>

          但这里只需书写List中的类型即可,即只需书写Student的全路径名

     -->

     <select id="findAll"resultType="cn.itcast.javaee.mybatis.app09.Student">

         select id,name,sal from students

     </select>

    

    

    

     <!-- 更新学生 -->

     <update id="update"parameterType="cn.itcast.javaee.mybatis.app09.Student">

         update students setname=#{name},sal=#{sal} where id=#{id}

     </update>

    

    

    

     <!-- 删除学生 -->

     <delete id="delete"parameterType="cn.itcast.javaee.mybatis.app09.Student">

         delete from students where id = #{id}

     </delete>

    

 

     <!--

     <insert id="delete"parameterType="cn.itcast.javaee.mybatis.app09.Student">

         delete from students where id = #{id}

     </insert>

     -->    

    

    

     <!--

         注意:这个insert/update/delete标签只是一个模板,在做操作时,其实是以SQL语句为核心的

             即在做增/删/时,insert/update/delete标签可通用,

             但做查询时只能用select标签

             我们提倡什么操作就用什么标签

     -->    

    

</mapper>

 

原创粉丝点击