mybatis中的mapper.xml使用循环语句

目录
  • mapper.xml使用循环语句
    • mapper.java,传的参数是map
    • mapper.xml
    • 参数,数组,list都行
  • mybatis xml循环语句
    • 首先创建DAO方法
    • 除了批量插入,使用SQL in查询多个用户时也会使用

mapper.xml使用循环语句

mapper.java,传的参数是map

List<实体类> getList(Map<String,Object> paraMap);

mapper.xml

<!--select:对应sql的select语句, id:方法名,parameterType:参数类型,resultMap:返回对象类型(BaseResultMap:标签-->
<!--<resultMap id="BaseResultMap" type="实体类包路径"> 实体类的映射 不改的话一般都是这个名字)-->
<select id="getList" parameterType="java.util.Map" resultMap="BaseResultMap">
  select * from table where 
  <!-- 判断-->
  <if test="a!= null">
      a = #{a,jdbcType=VARCHAR}
  </if>
  <if test="list!= null">
    and id in
    <!-- for循环, item:循环后的值, index:循环下标列式for循环的 i ,collection:参数名-->
    <!-- open="(" close=")" separator="," 就是把循环的值组成 (item1,item2,item3)的格式-->
    <foreach item="item" index="index" collection="list" open="(" close=")" separator=",">
     #{item}
    </foreach>
  </if>
</select>

参数,数组,list都行

Map<String,Object> map = new HashMap<String, Object>();
map.put("a","参数");
map.put("list",数组、List都行)
List<实体类> list = mapper.getList(map);

mybatis xml循环语句

MyBatis很好的支持批量插入,使用foreach即可满足

首先创建DAO方法

package com.youkeda.comment.dao;
import com.youkeda.comment.dataobject.UserDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.time.LocalDateTime;
import java.util.List;
@Mapper
public interface UserDAO {
    int batchAdd(@Param("list") List<UserDO> userDOs);
}
<insert id="batchAdd" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id">
    INSERT INTO user (user_name, pwd, nick_name,avatar,gmt_created,gmt_modified)
    VALUES
    <foreach collection="list" item="it" index="index" separator =",">
        (#{it.userName}, #{it.pwd}, #{it.nickName}, #{it.avatar},now(),now())
    </foreach >
</insert>

foreach相当于执行力java的for循环,他的属性:

  • collection指定集合的上下文参数名称比如这里的@Param("list")
  • item指定遍历的每一个数据的变量,一般叫it,可以使用it.userName来获取具体的值
  • index集合的索引值,从0开始
  • separator遍历每条记录并添加分隔符

除了批量插入,使用SQL in查询多个用户时也会使用

package com.youkeda.comment.dao;
import com.youkeda.comment.dataobject.UserDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.time.LocalDateTime;
import java.util.List;
@Mapper
public interface UserDAO {
    List<UserDO> findByIds(@Param("ids") List<Long> ids);
}
<select id="findByIds" resultMap="userResultMap">
    select * from user
    <where>
        id in
        <foreach item="item" index="index" collection="ids"
                    open="(" separator="," close=")">
            #{item}
        </foreach>
    </where>
</select>
  • open

表示的是节点开始时自定义的分隔符

  • close

表示是节点结束时自定义的分隔符

执行后会变成:

select * from user where id in (?,?,?)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 详解MyBatis批量插入数据Mapper配置文件的写法

    对于MyBatis配置文件的用法一直不是很熟悉,之前一直是使用注解来开发的,但是注解也有不好的地方就是如果数据库的表结构发生变化在代码中修改起来很麻烦. 其实批量插入很简单,这里做些简要的说明.请看配置文件的写法: <insert id="insertAll" parameterType="java.util.List" useGeneratedKeys="true"> <selectKey resultType="l

  • mybatis的mapper.xml中resultMap标签的使用详解

    1.前言 最近博主在做一个ssm框架的共享汽车管理系统,其中,数据库字段设计的有下划线方式,a_username,然后在写mapper.xml里面的sql语句的时候,一直出现查询语句查询的值为null的情况.或者是resultMap标签和驼峰规则不太明白的同学,可以看这里. 于是顺便梳理一下. 2.关于resultMap 2.1.什么是resultMap? 在mybatis中有一个resultMap标签,它是为了映射select查询出来结果的集合,其主要作用是将实体类中的字段与数据库表中的字段进

  • mybatis中mapper.xml文件的常用属性及标签讲解

    目录 ${}和#{}的区别 常见的属性 常见标签 < sql >标签 < where >和< if >标签 < set >标签 < trim>标签 < choose >标签 mybatis 的xml文件中标签错误 ${}和#{}的区别 #{}会自动在你要插入字段两端 加上引号.例如:你写的是order by #{username},传的是 zhangsan,那么会解析成order by "zhangsan". ${

  • MyBatis的模糊查询mapper.xml的写法讲解

    目录 MyBatis模糊查询mapper.xml的写法 1.直接传参 2.针对MySQL数据库的语句 3.适用于所有数据库的则采用MyBatis的bind元素 MyBatis在xml中模糊查询的常用的3种方式 MyBatis模糊查询mapper.xml的写法 模糊查询语句不建议使用${}的方式,还是建议采用MyBatis自带的#{}方式,#{}是预加载的方式运行的,比较安全,${}方式可以用但是有SQL注入的风险!!! 1.直接传参 在controller类中 String id = "%&qu

  • mybatis中的mapper.xml使用循环语句

    目录 mapper.xml使用循环语句 mapper.java,传的参数是map mapper.xml 参数,数组,list都行 mybatis xml循环语句 首先创建DAO方法 除了批量插入,使用SQL in查询多个用户时也会使用 mapper.xml使用循环语句 mapper.java,传的参数是map List<实体类> getList(Map<String,Object> paraMap); mapper.xml <!--select:对应sql的select语句,

  • 解决Mybatis映射文件mapper.xml中的注释问题

    目录 Mybatis映射文件mapper.xml的注释问题 报错信息 解决办法 mapper.xml文件中的注释 注释方式 ‘无效的列索引’bug和解决 小结一下 Mybatis映射文件mapper.xml的注释问题 从昨天夜晚9点到今天中午,一直被项目bug所困惑,中间这段时间一直未解决这个问题,也咨询很多群里大佬,也未能解决 有的说是我代码写的有问题,如mapper文件中没有写入参数类型parameterType,也有说是我项目结构目录构建出错,按照他们的建议进行修正,也是未尽人意,启动项目

  • Mybatis中的config.xml配置文件详细解析

    经过前面的文章,我觉得对Mybatis的正题理解已经足够了,但是对Mybatis的使用,我觉得还是会有一点的模糊,就我个人而言,我觉得掌握好Mybatis框架,主要要明白三个文件,第一个就是等下要谈论的Mybatis-comfig.xml文件,还有就是**Mapper.xml,以及我们所定义的Mapper类,理解了这三个东西,然后有sql的基础,还有java的基础的话,后面不论是使用基于xml的方法,还是基于java-based Configuration的方法,都会简单的多. 废话不多说,现在

  • MyBatis 中使用 Mapper 简化代码的方法

    前面文章所写的增删改查是存在问题的.每执行一次 SQL,都要开启一次会话,并且需要提交并关闭,主要问题就是冗余代码过多,模板化代码过多. 例如,我想开发一个 UserDao,可能是下面这样: 简化前的 UserDao public class UserDao { private SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtils.getInstance(); public User getUserById(Integer id

  • IDEA中没有Mapper.xml模板选项的处理方法

    🎃New的时候没有Mapper.xml选项 在IDEA中导入模板即可 模板类容,复制粘贴即可 <?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" > <mapper namespace=""> </mapper> 再New的时候就会有MybatisMapper选项了 到此这篇关于IDEA中没有Mapper.xml模板的文章就介绍到这了,更多相关idea Mapper.xml模板内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

  • mybatis映射文件mapper.xml的具体写法

    Mapper映射文件是一个xml格式文件,必须遵循相应的dtd文件规范 在学习mybatis的时候我们通常会在映射文件这样写: <?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&q

  • mybatis中注解与xml配置的对应关系和对比分析

    注解与xml配置的对应关系 mybatis中注解就是简单不需要写配置文件,适合简单的数据处理,理解起来比较容易,不动态生成SQL时候可以用用. 需要绑定,有些时候不如配置文件,配置文件扩展强. 选择合适的方式应用在合适的场景,注解主要应用于sql语句比较简单容易理解的情况下可读性高:生成动态sql时用xml配置文件要更简洁,扩展性强 常用的注解和xml的对应关系 @CacheNamespace 类 <cache> @CacheNamespaceRef 类 <cacheRef> @R

  • 原理分析Java Mybatis中的Mapper

    目录 准备 1.pom文件 2.user类-数据库 3.实体类 4.dao 层 5.Mapper 文件 源码分析 1.断点 2.查看源码 总结 准备 1.pom文件 <dependencies> <!--mybatis坐标--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.5&

  • 解决mybatis中的mapper命名问题

    mybatis mapper命名问题 mapper文件中id命名最好首字母小写,避免让mybatis认为是一个类 <!--获取供应商列表--> <resultMap id="ProviderList" type="Provider"> <result property="id" column="id"/> <result property="proCode" col

  • Mybatis中的mapper模糊查询语句LIKE

    目录 Mybatis mapper模糊查询语句LIKE mapper 模糊查询语句报错 Mybatis mapper模糊查询语句LIKE 最近做学校安排的课程设计作业,用到SSM框架,在自己写mapper代码是遇到了模糊查询的问题 困扰好久 下面是我解决这个问题的方法,其他网上好多方法我尝试过却没有实现 下面试sql语句 select * from goodsinfo where goodsname like '%' #{goodsname} '%' 注意代码中的空格 空格 空格 #{ } 方式

随机推荐