zoukankan      html  css  js  c++  java
  • MyBatis常用标签

    1.定义SQL语句

    1.1 select 标签

    属性介绍:
    • id:唯一的标识符
    • parameterType:传给此语句的参数的全路径名或别名 例:com.test.pojo.User或user
    • resultType:语句返回值类型或别名。注意,如果是集合,那么这里填写的是集合的泛型,而不是集合本身(resultType 与resultMap 不能并用)
    <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="Object">
            select * from student where id=#{id}
    </select>


    1.2 insert 标签

    属性介绍:
    • id:唯一的标识符
    • parameterType:传给此语句的参数的全路径名或别名 例:com.test.pojo.User
    <insert id="insert" parameterType="Object">
        insert into student    
        <trim prefix="(" suffix=")" suffixOverrides="," >    
          <if test="name != null"> NAME,  </if>    
        </trim>
        <trim prefix="values(" suffix=")" suffixOverrides="," >
          <if test="name != null">  #{name}, </if>    
        </trim>
    </insert>


    1.3 delete 标签

    属性介绍:
    • id:唯一的标识符
    • parameterType:传给此语句的参数的全路径名或别名 例:com.test.pojo.User
    <delete id="deleteByPrimaryKey" parameterType="Object">
        delete from student where id = #{id}
    </delete>



    1.4 update 标签

    属性介绍:
    • id:唯一的标识符
    • parameterType:传给此语句的参数的全路径名或别名 例:com.test.pojo.User
    <update id="updateByName" parameterType="com.test.pojo.User">
        UPDATE t_user SET update_time = NOW()
        <trim suffixOverrides=",">
            <if test="name != null">, username = #{name}</if>
        </trim>
        WHERE userid = #{id}
    </update>



    2. 建立JAVA对象与数据库列名对应关系

    2.1 resultMap 标签

    基本作用
    • 建立SQL查询结果字段与实体属性的映射关系信息。
    • 查询的结果集转换为Java对象,方便进一步操作。
    • 将结果集中的列与Java对象中的属性对应起来并将值填充进去


    标签说明

       
       主标签:

    • id:resultMap 的标志
    • type:返回值的类名

       子标签

    • id:用于设置主键字段与领域模型属性的映射关系,此处主键为ID,对应id。
    • result:用于设置普通字段与领域模型属性的映射关系

       

    示例说明


    在数据库中创建一张 user 表, 分别有 user_id,user_name,user_password 三个字段


    项目中创建一个实体类 user.java


    resultMap为:

    <resultMap id="userResultMap" type="com.zyu.cupid.pojo.vo.ArticleVo">
        <result property="id"       column="user_id"/>
        <result property="name"     column="user_name"/>
        <result property="password" column="user_password"/>
    </resultMap>
        
    <!--查询时resultMap引用userResultMap -->
    <select id="selectByPrimaryKey" resultMap="userResultMap" parameterType="Object">
        select id,name,password from user where id=#{id}
    </select>



    3. 动态SQL拼接

    3.1 if 标签

    if标签通常用于WHERE语句、UPDATE语句、INSERT语句中,通过判断参数值来决定是否使用某个查询条件、判断是否更新某一个字段、判断是否插入某个字段的值

    <if test="name != null and name != ''">
         and NAME = #{name}
    </if>



    3.2 foreach 标签

    foreach标签主要用于构建in条件,可在sql中对集合进行迭代。也常用到批量删除、添加等操作中。

    属性介绍:
    • collection:collection属性的值有三个分别是list、array、map三种,分别对应的参数类型为:List、数组、map集合。
    • item :表示在迭代过程中每一个元素的别名
    • index :表示在迭代过程中每次迭代到的位置(下标)
    • open :前缀
    • close :后缀
    • separator :分隔符,表示迭代时每个元素之间以什么分隔


    参数:

    List<Object> list = new ArrayList();
    JSONObject param = new JSONObect();
    param.put("idArray", list)

    使用:
    <select id="findList" resultMap="ArticleVo">
        SELECT * FROM article A WHERE art_id IN
          <foreach collection="param.idArray" item="item" index="index" open="(" close=")" separator="," >#{item.id}
          </foreach>
    </select>



    3.3 trim 标签

    trim标记是一个格式化的标记,主要用于拼接sql的条件语句(前缀或后缀的添加或忽略),可以完成set或者是where标记的功能。

    属性介绍:
    • prefix:前缀覆盖并增加其内容
    • suffix:后缀覆盖并增加其内容
    • prefixOverrides:前缀判断的条件
    • suffixOverrides:后缀判断的条件

    例如:

    <update id="updateByPrimaryKey" parameterType="Object">
        update user set
        <trim suffixOverrides=",">
            <if test="name != null  ">
                user_name = #{name},
            </if>
            <if test="password != null  ">
                user_password = #{password},
            </if>
        </trim>
        where user_id = #{id}
    </update>

    如果password的值为空的话,会执行如下语句

    update user set user_name = 'XXX' where user_id = 'XXX'

    会忽略最后一个 “,”

  • 相关阅读:
    试用第三方web推送GoEasy
    使用intellj idea 搭建本地开发环境
    一种基于struts2 拦截器 和 log4j的轻量级crm权限及行为跟踪方式
    Spring AOP声明式事务异常回滚 若干法则
    spring aop 切面测试
    centos 安装 mysql
    只是 换个方式,
    contrller 是 file's owners,
    色差,15,还是15 ,换了颜色 就显的小了,
    一块,分开,还是不分开 一个整体,
  • 原文地址:https://www.cnblogs.com/zyulike/p/12202343.html
Copyright © 2011-2022 走看看