Mybatis中动态SQL语句中的parameterType不同数据类型的用法
1. 简单数据类型,
    此时#{id,jdbcType=INTEGER}中id可以取任意名字如#{a,jdbcType=INTEGER},
    如果需要if test则一定使用<if test="_parameter != null">,
    此处一定使用_parameter != null而不是id != null
    <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="Java.lang.Integer" >
        select * from base.tb_user
        <if test="_parameter != null">
            where id = #{id,jdbcType=INTEGER}
        </if>
    </select>
 2. 一个对象数据类型,
    此时#{name,jdbcType=CHAR},#{sex,jdbcType=CHAR}中的name和sex一定要使用user对象的属性名
    测试user对象<if test="_parameter != null">
    测试user对象属性<if test="name != null">或者<if test="#{name} != null">
 3. 二个对象数据类型
    List<User> select(User user,Page page),
    此时if test一定要<if test='_parameter.get("0").name != null'>(通过parameter.get(0)得到第一个参数即user);
    where语句where name = #{0.name,jdbcType=CHAR}(通过0.name确保第一个参数user的name属性值)
    不用0,1也可以取名List<User> select(@param(user)User user,@param(page)Page page)
 4. 集合类型
    此时collection="list"会默认找到参数的那个集合idlist(collection="list"这是默认写法,入参为数组Integer[] idarr,则用collection="array")
    User selectUserInList(List<Interger> idlist);
    <select id="selectUserInList" resultType="User">
    SELECT * FROM USER  WHERE ID in
         <foreach item="item" index="index" collection="list" open="(" separator="," close=")">
            #{item}
         </foreach>
    </select>
5. 对象类型中的集合属性
    此时collection="oredCriteria"会找到入参example这个非集合对象的oredCriteria属性,此属性是一个集合
    List<User> selectByExample(UserExample example);
    <where>
    <foreach collection="oredCriteria" item="criteria" separator="or" >
    <if test="criteria.valid" >
6. map类型(分页查询教师信息)
    public List<Teacher> findTeacherByPage(Map<String, Object> map);
    Map<String, Object> params = new HashMap<String, Object>();
    //以name字段升序排序,params.put("sort", "name"); params.put("dir", "asc");
    //查询结果从第0条开始,查询2条记录 params.put("start", 0);  params.put("limit", 2);  
    //查询职称为教授或副教授的教师  params.put("title", "%教授");
    此时入参map的key相当于一个object的属性名,value相当于属性值
    <select id="findTeacherByPage"resultMap="supervisorResultMap" parameterType="java.util.Map">
            select * from teacher where title like #{title}           
            order by ${sort} ${dir} limit #{start},#{limit}
    </select>

7.批量插入
    <insert id="addRoleModule" parameterType="java.util.List">
        INSERT INTO T_P_ROLE_MODULE (ROLE_ID, MODULE_ID)
        <foreach collection="list" item="item" index="index" separator=" UNION ALL ">  
            SELECT #{item.roleId}, #{item.moduleId} FROM DUAL
        </foreach>  
    </insert>
8.MyBatis+MySQL 返回插入的主键ID
    在mapper中指定keyProperty属性,示例如下:
    我们在insert中指定了keyProperty="userId"和useGeneratedKeys="true",其中userId代表插入的User对象的主键属性。
    System.out.println("插入前主键为:"+user.getUserId());
    userDao.insertAndGetId(user);//插入操作
    System.out.println("插入前主键为:"+user.getUserId());  
    <insert id="insertAndGetId" useGeneratedKeys="true" keyProperty="userId" parameterType="com.chenzhou.mybatis.User">  
        insert into user(userName,password,comment) values(#{userName},#{password},#{comment})  
    </insert>

Mybatis中动态SQL语句中的parameterType不同数据类型的用法的更多相关文章

  1. MyBatis中动态SQL语句完成多条件查询

    一看这标题,我都感觉到是mybatis在动态SQL语句中的多条件查询是多么的强大,不仅让我们用SQL语句完成了对数据库的操作:还通过一些条件选择语句让我们SQL的多条件.动态查询更加容易.简洁.直观. ...

  2. MyBatis 动态 SQL 语句中出现 '<' 的问题

    问题描述 映射接口方法如下: /** * 根据姓名和年龄查询用户信息 * @param name 姓名 * @param user 获取年龄 * @return */ public List<U ...

  3. MyBatis 中实现SQL语句中in的操作 (11)

    MyBatis 中实现SQL语句中in的操作 概括:应用myBatis实现SQL查询中IN的操作 1.数据库结构及其数据 2.mapper.xml文件 <?xml version="1 ...

  4. mybatis 的动态sql语句是基于OGNL表达式的。

    mybatis 的动态sql语句是基于OGNL表达式的.可以方便的在 sql 语句中实现某些逻辑. 总体说来mybatis 动态SQL 语句主要有以下几类:1. if 语句 (简单的条件判断)2. c ...

  5. MyBatis 构造动态 SQL 语句

    以前看过一个本书叫<深入浅出 MFC >,台湾 C++ 大师写的一本书.在该书中写到这样一句话,“勿在浮沙筑高台”,这句话写的的确对啊.编程很多语言虽然相通,但是真正做还是需要认真的学习, ...

  6. delphi中的sql语句中空格问题

    sql语句中的冒号 ‘’,在delphi中需要用四个冒号表示 ‘’‘’,delphi中的两个冒号只代表一个冒号

  7. 阶段3 1.Mybatis_08.动态SQL_03.mybatis中动态sql语句-foreach和sql标签

    foreach标签 in的查询 sql语句好写,但是传参在映射文件里面改怎么传呢 定义一个List<Integer>成员变量,然后生成get和set 定义一个新的查询方法 open:开始符 ...

  8. Mybatis 的动态 SQL 语句

    <if>标签 我们根据实体类的不同取值,使用不同的 SQL 语句来进行查询. 比如在 id 如果不为空时可以根据 id 查询, 如果 username 不同空时还要加入用户名作为条件.这种 ...

  9. java中的sql语句中如果有like怎么写

    我先是在SQL server中写了如下语句: 这样是顺利执行的,可是我把这句话复制到Java代码中打出来却报错了, 刚开始我还以为是前端没有传回来值,待我一句一句打印发现,它提示我rs没有next.到 ...

随机推荐

  1. centos添加用户并赋予管理员权限

    用centos时,root用户一般都是超级管理员使用的,一般不轻易给别人,但是有时候同事安装软件时需要root账号,又不得不给,只能重新建一个用户,并赋予管理员权限.下面介绍创建用户并赋予管理员权限的 ...

  2. 添加商品到购物车add_to_cart.php(学生笔记)

    <?php session_start();//启动session $goods_id = $_POST['goods_id'];//获取商品id $number = $_POST['num'] ...

  3. 松软科技web课堂:SQLServer之LEN() 函数

    LEN() 函数 LEN 函数返回文本字段中值的长度. SQL LEN() 语法 SELECT LEN(column_name) FROM table_name SQL LEN() 实例 我们拥有下面 ...

  4. web安全知识整理

    常见漏洞 sql注入 原理:SQL注入攻击是通过将恶意的SQL查询语句插入到应用的输入参数中,欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息 分类: 注入类型:字符型, 数字型 提 ...

  5. MySQL数据库:排序及limit的使用

    排序 排序方式: 升序--asc(默认:从小到大) 降序--desc(由大到小) # 排序语法: order by 字段1 [asc]|desc[,字段2 [adc]|desc,--] limit # ...

  6. Python语法速查: 6. 循环与迭代

    返回目录 (1)while循环与for循环 while仅能用于普通循环,而for除了可以做循环外,还可以遍历序列.集合.字典.迭代器等. 需要注意的是,在类似:for i in somelist: 的 ...

  7. CodeForces - 722C(思维+倒着并查集)

    题意 https://vjudge.net/problem/CodeForces-722C 给你一个由n个非负整数组成的数列 a1​ ,a2​ ,...,an​ . 你将要一个一个摧毁这个数列中的数. ...

  8. Jenkins实现单一安卓项目打包多个module填坑实录

    今天接手一个任务,已有项目结构上新添加了一个module,这个module打包工作需要在Jenkins上添加一个方便测试点击的打包工程 因为之前已有现成的打包工程,我直接新建了一个工程并且复制原有工程 ...

  9. 04-Node.js学习笔记-相对路径VS绝对路径

    4.1相对路径VS绝对路径 大多数情况下使用绝对路径,因为相对路径有时候相对的是命令行工具的当前工作目录 在读取文件或者设置文件路径时都会选择绝对路径 4.2使用__dirname 获取当前文件所在的 ...

  10. windows下配置ngnix服务器经常出现503问题解决办法

    自己网站在windows server2008下安装的ngnix,然后配置php,网站访问流量并不大,但是经常出现503问题.经过查看ngnix服务器错误日志,发现: (10061: No conne ...