美文网首页
02.MyBatis映射文件深入

02.MyBatis映射文件深入

作者: 黑咔 | 来源:发表于2019-04-18 09:07 被阅读0次

1.1 动态sql语句

1. 动态sql语句概述

Mybatis 的映射文件中,前面我们的 SQL 都是比较简单的,有些时候业务逻辑复杂时,我们的 SQL是动态变化的,此时我们的 SQL 就不能满足要求了。

2. (重点)动态 SQL 之<if>

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

    <select id="findByCondition" parameterType="user" resultType="user">
        select * from user
        <where>
            <if test="id != 0">
                and id=#{id}
            </if>
            <if test="username != null">
                and username=#{username}
            </if>
            <if test="password != null">
                and password=#{password}
            </if>
        </where>
    </select>
动态 SQL 之<if> 动态 SQL 之<if>
3. 动态 SQL 之<foreach>

循环执行sql的拼接操作,例如:SELECT * FROM USER WHERE id IN (1,2,5)。

<foreach>标签用于遍历集合,它的属性:
• collection:代表要遍历的集合元素,注意编写时不要写#{}
• open:代表语句的开始部分
• close:代表结束部分
• item:代表遍历集合的每个元素,生成的变量名
• sperator:代表分隔符

List<User> findByIds(List<Integer> ids);
    <select id="findByIds" parameterType="list" resultType="user">
        select * from user
        <where>
            <foreach collection="list" open="id in (" close=")" item="id" separator=",">
                #{id}
            </foreach>
        </where>
    </select>

测试代码片段如下:

    @Test
    public void test2() throws IOException {
        InputStream inputStream = Resources.getResourceAsStream("sqlMapConfig.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        List<Integer> ids = Arrays.asList(1, 3, 5);
        List<User> userList = mapper.findByIds(ids);
        System.out.println(userList);
    }

1.2 SQL片段抽取

Sql 中可将重复的 sql 提取出来,使用时用 include 引用即可,最终达到 sql 重用的目的


SQL片段抽取

MyBatis映射文件配置小结:

<select>:查询
<insert>:插入
<update>:修改
<delete>:删除
<where>:where条件
<if>:if判断
<foreach>:循环
<sql>:sql片段抽取

相关文章

  • 02.MyBatis映射文件深入

    1.1 动态sql语句 1. 动态sql语句概述 Mybatis 的映射文件中,前面我们的 SQL 都是比较简单的...

  • hibernate配置文件详解

    1、映射配置文件 2、核心映射文件

  • mmap 一定比普通读写快吗?

    原理 : 文件磁盘地址映射到内存中 ,是文件地址映射。不是文件内容映射。通过缺页中断将文件内容加载到内存中。缺页中...

  • 25用户态内存映射

    mmap 将虚拟地址空间映射到物理内存 匿名映射,即虚拟内存和物理内存直接映射文件映射,将文件映射到虚拟内存ima...

  • Hibernate学习(配置文件详解)

    Hibernate映射配置文件(重点) 映射配置文件名称和位置没有固定要求 映射配置文件中,标签name属性值写实...

  • Docker 映射文件

    Docker 可以映射文件,需要注意,文件路径必须完整,并且映射的文件必须存在,如果不存在,会认为是目录。映射的文...

  • APP优化 —— MMAP内存映射

    mmap 一种内存映射文件的方法 mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上,如果文件的大小不...

  • 透视纹理映射

    伪3D中的贴图纹理的透视矫正深入探索透视纹理映射(上)深入探索透视纹理映射(下)Perspective Textu...

  • JavaEE基础知识学习----MyBatis(三)映射文件

    MyBatis映射文件 MyBatis 的真正强大在于它的映射语句,也是它的魔力所在 。SQL 映射文件有很少的几...

  • 内存映射文件

    创建内存映射文件 CreateFileMapping 将上述真正存在的文件(物理文件) hFile映射成为一个虚拟...

网友评论

      本文标题:02.MyBatis映射文件深入

      本文链接:https://www.haomeiwen.com/subject/oduywqtx.html