Mybatis的高级查询&批量删除&批量添加

本文介绍了Mybatis的高级查询技巧,包括如何进行映射Mapper配置,实现动态SQL以进行批量删除和添加。此外,详细讨论了多对一和一对多的关系映射,以及嵌套结果和查询的处理方法。最后,还涉及了Mybatis的缓存机制。
摘要由CSDN通过智能技术生成

一、映射Mapper

接口方法映射到对应的SQL
XXXMapper.xml的命名空间名称就是Mapper接口的全限定名
Mapper接口上也可以通过相应的注释来写SQL(但是最好不要这么写哦)

//    查询全部
//    @Select("select * from employee")
    List<Employee> findAll();

employeeMapper.xml

<?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="cn.cxm.mapper.mapper.EmployeeMapper">
    <select id="findOne" parameterType="long" resultType="cn.cxm.mapper.domain.Employee">
        SELECT * FROM employee WHERE id=#{id}
    </select>

    <select id="findAll" parameterType="long" resultType="cn.cxm.mapper.domain.Employee">
        SELECT * FROM employee
    </select>
    <insert id="save" parameterType="cn.cxm.mapper.domain.Employee" >
        INSERT INTO employee (name,age) VALUES (#{name},#{age})
    </insert>

<!--
    <update id="update" parameterType="cn.cxm.mapper.domain.Employee">
        UPDATE employee SET name=#{name},age=#{age} WHERE id=#{id}
    </update>
-->

    <delete id="delete" parameterType="long">
        DELETE FROM employee WHERE id=#{id}
    </delete>
    <!--
    添加多条数据
    使用foreach标签,collection:遍历的集合,item:集合的每一个元素
    separator:分离符
    -->
    <insert id="batchSave" parameterType="list">
        INSERT INTO employee (name,age) VALUES
        <foreach collection="list" item="emp" separator=",">
            (#{emp.name},#{emp.age})
        </foreach>
    </insert>

    <!--批量删除,删除一定范围,使用in( ,)-->
    <delete id="batchDelete" parameterType="list">
        DELETE FROM employee WHERE id in
        <foreach collection="list" item="id" separator="," open="(" close=")">
            #{id}
        </foreach>
    </delete>

    <!--模糊查询-->
<!--
    <select id="queryAll" parameterType="list" resultType="cn.cxm.mapper.domain.Employee">
        SELECT * FROM employee where name LIKE CONCAT("%",#{name},"%")
    </select>
-->
<!--使用where标签,自动将第一个and替换为where-->
    <!--多条件查询-->
    <select id="queryAll" parameterType="cn.cxm.mapper.query.EmployeeQuery" resultType="cn.cxm.mapper.domain.Employee">
        SELECT * FROM employee
        <where>
            <if test="name!=null and name!=''">
                AND name LIKE CONCAT("%",#{name},"%")
            </if>
            <if test="minAge!=null">
                AND age>=#{minAge}
            </if>
            <if test="maxAge!=null">
                AND <![CDATA[ age<=#{maxAge}]]>
            </if>
        </where>
    </select>

    <!--查询总条数-->
    <select id="count" parameterType="cn.cxm.mapper.query.EmployeeQuery" resultType="long">
        SELECT count(id) FROM employee
            <where>
                <if test="name!=null and name!=''">
                    AND name LIKE CONCAT("%",#{name},"%")
                </if>
                <if test="minAge!=null">
                    AND age>=#{minAge}
                </if>
                <if test="maxAge!=null">
                    AND <![CDATA[ age<=#{maxAge}]]>
                </if>
            </where>
    </select>

    <!--动态修改,当使用动态修改,只修改其中的一条数据,同一id的其他数据不会改变-
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值