zoukankan      html  css  js  c++  java
  • mapper.xml文件映射配置

    一、导入约束

    为全局配置文件绑定dtd约束:
        1)联网会自动绑定
        2)没网的时候【/org/apache/ibatis/builder/xml/mybatis-3-mapper.dtd】:解压mybatis 的jar包然后在eclipse中绑定

            window——preperances——XML Catalog ——Add——设置key为http://mybatis.org/dtd/mybatis-3-mapper.dtd,绑定本地文件位置location:

    1 <!DOCTYPE mapper
    2   PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    3   "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

    二、mapper映射文件结构

    <mapper namespace="mapper.buyrecordMapper"> 

    <!--namespace 必须配置成接口的全限定名。Mybatis内部就是通过这讲接口和mapepr.xml关联起来的。接口中方法和mapper.xml 中的id对应。否则会报错-->
    resultMap (自定义映射结果集) sql标签 <select id=""></select>查询标签 <insert id=""></insert>插入标签 <update id=""></update>更新标签 <delete id=""></delete>删除标签 </mapper>

    三、resultMap (自定义映射结果集)

     

    <!--resultMap将数据库中的列(字段名)和entity中属性的名字建立映射关联,id 这个resultMap的唯一标识,type表示要映射的实体-->
    <resultMap type="Goods" id="Map">
                      column:数据库字段,property:映射属性
                      id列:主键列,result普通列
            <id column="id" property="id" />
            <result column="name" property="name" />
            <result column="flag" property="flag" />
                    多表查询:
                     一对一,多对一assonciation标签,用javatype映射
                    一对多,collection标签,用oftype映射
        <association property="GoodsType" javaType="GoodsType">
            <id column="id" property="id"/>
            <result column="tname" property="name"/>
            </association>
                   <!--***********分割线**************-->
            <collection property="employees" ofType="employees">
                <result column="ename" property="name" />
             </collection>
    </resultMap>

    四、sql标签

    <resultType="###">  <resultMap="###">  二选一,没配置或配置错,执行程序必报错
    <select id="finduser" resultType="User">
          select * from account ;
     </select>
    <insert id="adduser" parameterType="user">
            insert into
            account(name,money) values(#{name},#{money})
    </insert>
    <update id="updateuser" parameterType="user">
            update account set
            name=#{name},money=#{money} where id=#{id}
    </update>
    <delete id="deluser" parameterType="int">
            delete from account where
            id=#{id}
    </delete>

    五、动态sql

    < where >和< if >标签

    < where > : 主要用来替换sql语句中的where字段,他的作用主要是用来简化sql语句中where条件判断的书写的

    < if >:条件判断标签,配置属性test=" 条件字符串 ",判断是否满足条件,满足则执行,不满足则跳过

     1 <select id="deptif" resultType="dept" parameterType="dept">
     2         select * from dept
     3         <where>
     4             <if test="dname!=null and dname.trim()!=''">
     5                 and dname like concat('%',#{dname},'%')
     6             </if>
     7             <if test="loc!=null and loc.trim()!=''">
     8                 and loc=#{loc}
     9             </if>
    10         </where>
    11 </select>

    < set >标签

    < set > : 主要用来替换sql语句中的set字段,一般在update中使用。

     1 <update id="update" parameterType="Dept">
     2         update dept
     3         <set>
     4             <if test="dname!=null">
     5                 dname=#{dname},
     6             </if>
     7             <if test="loc!=null">
     8                 loc=#{loc}
     9             </if>
    10         </set>
    11         where id=#{id}
    12 </update>

    < trim>标签

    < trim > : 是一个格式化的标记,可以完成set或者是where标记的功能

      prefix:前缀      
      prefixoverride:去掉第一个and或者是or

     1 <select id="depttrim" resultType="Dept" parameterType="Dept">
     2         select * from dept
     3         <trim prefix="where" suffixOverrides="and">
     4             <if test="dname!=null and dname.trim()!=''">
     5                 dname like concat('%',#{dname},'%') and
     6             </if>
     7             <if test="loc!=null and loc.trim()!=''">
     8                 loc=#{loc}
     9             </if>
    10         </trim>
    11 </select>

    < choose >标签

    < where > : choose标签是按顺序判断其内部when标签中的test条件出否成立,如果有一个成立,则 choose 结束。

    当 choose 中所有 when 的条件都不满则时,则执行 otherwise 中的sql。

    类似于Java 的 switch 语句,choose 为 switch,when 为 case,otherwise 则为 default。

     1 <select id="deptchoose" resultType="Dept" parameterType="Dept">
     2         select * from dept
     3         <where>
     4             <choose>
     5                 <when test="loc!=null">
     6                     loc=#{loc}
     7                 </when>
     8                 <when test="dname!=null and dname.trim()!=''">
     9                     dname like concat('%',#{dname},'%')
    10                 </when>
    11                 <otherwise>
    12                     id=#{id}
    13                 </otherwise>
    14             </choose>
    15         </where>
    16 </select>

    <foreach>标签

    foreach标签经常用于遍历集合,构建in条件语句或者批量操作语句。

     1 <select id="deptforeach" resultType="Dept">
     2         select * from dept
     3         <where>
     4             <if test="list!=null and list.size()>0">
     5                 <foreach collection="list" separator="," open="id in("
     6                     close=")" item="uid">
     7                     #{uid}
     8                 </foreach>
     9             </if>
    10         </where>
    11 </select>
    <insert id="addProperties" parameterType="java.util.List">
            INSERT INTO tdt_sync_instance_properties (name,instance_id) VALUES
            <foreach collection="list" item="prop" separator=",">
                (#{prop.name},#{prop.instance_id})
            </foreach>
            ;
      </insert>
  • 相关阅读:
    基于Mybatis3.0.6的基本操作介绍
    正则验证邮箱格式是不是正确
    Linux_文件权限
    飘逸的python
    通过Fsharp探索Enterprise Library Exception
    Oracle学习——扫盲篇
    代码块练习题:看代码写程序的执行结果。
    代码块:在Java中用{}括起来的代码
    Java中如何使用帮助文档(API)
    Java如何制作帮助文档(API)
  • 原文地址:https://www.cnblogs.com/tweixi/p/12573516.html
Copyright © 2011-2022 走看看