MyBatis的Mapper.xml文件Sql写法的记录

"本文详细介绍了MyBatis中<foreach>标签的使用,包括根据List循环、根据字符串逗号分隔循环进行SQL构建,以及表数据的批量插入。还探讨了模糊查询的方法,如左匹配模糊查询,并解释了#{}
摘要由CSDN通过智能技术生成

1、<foreach></foreach>的运用

1.1、根据list循环

<select id="selectUserByUserIds" resultType="com.sys.pojo.po.User">
    select * 
    from sys_user 
    where user_id in
    <foreach collection="list" item="entity" separator="," open="(" close=")">
        #{entity}
    </foreach>
</select>

<!--
User selectUserByUserIds(List<String> list);
-->

1.2、根据字符串用逗号分隔循环

<select id="selectUserByUserIds" resultType="com.sys.pojo.po.User">
    select * 
    from sys_user 
    where user_id in
    <foreach item="item" index="index" collection="ids.split(',')" open="(" separator=","         close=")">
           #{item}
    </foreach>
</select>
<!-- ids为入参 
User selectUserByUserIds(String ids);
-->

 1.3、表数据的批量插入

<insert id="insertBatch" parameterType="com.sys.pojo.po.User">
        insert into sys_user(user_id, username, password, create_time)
        values
        <trim suffixOverrides="," >
        <foreach collection="list" item="entity">
        (#{entity.userId}, #{entity.username}, #{entity.password}, #{entity.createTime}),
        </foreach>
        </trim>
</insert>
<!--
int insertBatch(List<User> list);
-->

<!-- 
获取自动增加的id
useGeneratedKeys="true" keyColumn="element_id" keyProperty="elementId"
-->

2、模糊查询

<!-- 左匹配模糊查询-->
<select id="selectUserByUsername" resultType="com.sys.pojo.po.User">
    select *
    from sys_user
    where username like concat(#{username},'%')
</select>

<!--
User selectUserByUsername(String username);
-->

3、‘<’冲突

<select id="selectUserByTime" resultType="com.sys.pojo.po.User">
    select * 
    from sys_user
    <where> 
    <!-- 小于(两种写法) -->
    <![CDATA[AND create_time <= #{createTime}]]>
    AND create_time &lt;= #{createTime}

    <!-- 大于(两种写法) -->
    <![CDATA[AND create_time >= #{createTime}]]>
    AND create_time &gt;= #{createTime}
    </where>
</select>

<!-- 
User selectUserByTime(Date createTime);
-->

4、#{}与${}的区别

<!-- ids = "19,20,21" id为自增id-->

<delete id="deleteUserByUserIds">
    delete sys_user from id in (#{ids})
</delete>
<!--
int deleteUserByUserIds(String ids);
delete sys_user from id in ('19,20,21'),匹配了id为19的记录并删除了该记录,无法匹配其他数据
-->

<delete id="deleteUserByUserIds">
    delete sys_user from id in (${ids})
</delete>
<!--
int deleteUserByUserIds(String ids);
delete sys_user from id in (19,20,21),19,20,21三条记录均被删除成功
-->

<!-- 
注:#{}对字符串类型会自动加单引号,而${}不会
-->

5、xml文件里resultMap使用

5.1 查询list信息

<resultMap id="BaseResultMap" type="com.sys.pojo.po.User">
        <id column="ID" property="id" jdbcType="INTEGER"/>
        <result column="username" property="username" jdbcType="VARCHAR"/>
        <collection property="roleList" javaType="list" ofType="com.sys.pojo.po.Role"
                    select="findRole" column="ID">
        </collection>
</resultMap>

<select id="findNodes" resultType="com.sys.pojo.po.Role">
        SELECT
        t.ID,
        t.role_code,
        t.role_name
        FROM
        role t
        where t.id= #{eventFlowId,jdbcType=INTEGER}
    </select>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值