• java之mybatis之占位符


    1.mybatis中有两种占位符 #{}和 ${}.

    2. #{} 占位符是为了获取值,获取的值用在 where 语句后,insert 语句后,update 语句。

    #{} 获取值,是根据值的名称取值。#{} 可以使用3中类型的值填充。
    a) 参数是基本数据类型。那么在映射的语句中可以不写 parameterType, #{} 中的参数名也可以随意些。

    b) 参数是自定义类型。必须填写 parameterType , #{} 中名称是自定义类型的属性名,该属性有对应的 get 方法。如果没有get方法,那么会根据反射去获取该类型的值,如果找不到,那么报 ReflectionException 异常。

    c) 参数可以是 map 类型。#{} 中的名称 map 中的 key 值即可。

    #{} 也有不能处理的问题

    不能作为表名

    Select * from #{tablename}

    也不能作为列名

    Select * from t_user order by #{as}

    3. ${} 占位符是字符串连接符,可以动态获取相关值。

    能从 properties 文件中获取值,也可以作为表名,列名等值。

    ${} 占位符参数只能使用自定义类型和 map 类型。

    附:

    示例映射文件

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <!-- 
        namespace用来指定映射文件的命名空间,在这里通过namespace可以找到该空间下的所有的
        sql语句映射。namespace的命名通常和应该映射文件所在【包名+映射文件名】
     -->
    <mapper namespace="cn.sxt.vo.UserMapper">
        <select id="findAll" resultType="User">
            select * from t_user
        </select>
    
        <!-- select用来编写查询的sql语句  id在同一个namespace下是唯一的。
            parameterType用来指定参数类型
            #{id} 占位符 输入参数将会填充。建议和参数名要相同
            resultType 用来指定返回值类型
         -->
        <select id="selectUser" parameterType="int" resultType="User">
            select * from t_user where id = #{id}
        </select>
        <!-- insert用来映射插入语句 
            useGeneratedKeys 为true表示使用主键自增策略
            parameterType用来指定参数类型
            占位符中的 名称是参数的属性名,并且要提供get/set方法
        -->
        <insert id="insertUser" useGeneratedKeys="true" parameterType="User">
            insert into t_user(name,age) values(#{name},#{age})
        </insert>
        <!-- delete 用来指定删除语句 -->
        <delete id="deleteUser">
            delete from t_user where id=#{id}
        </delete>
        <!-- update 用来指定更新语句 -->
        <update id="updateUser" parameterType="User">
            update t_user set name=#{name},age=#{age} where id=#{id}
        </update>
        <select id="findData" resultType="User">
            select * from ${tname}
        </select>
    </mapper>
  • 相关阅读:
    OpenERP Framework API存档
    OpenERP 7 picking order 继承需要注意的地方
    Unity战斗系统之AI自主决策
    简易2D横版RPG游戏制作
    UGUI之Canvas Group
    UGUI之Canvas和EventSystem
    NGUI之scroll view的制作和踩坑总结
    NGUI之Toggle实现单选框
    Unity中对象池的使用
    继承MonoBehaviour类的优缺点和相关报错
  • 原文地址:https://www.cnblogs.com/Vincent-yuan/p/11297400.html
Copyright © 2020-2023  润新知