栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Mybatis 查询中的动态SQL以及复杂SQL映射

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mybatis 查询中的动态SQL以及复杂SQL映射

1. 映射器mapper

Mybatis的配置文件可以看看:
https://mybatis.org/mybatis-3/zh/configuration.html。
在平常的项目中对于复杂的查询,我们现在就要使用到动态SQL,来定义 SQL 映射语句了。 首先,我们需要告诉 MyBatis 到哪里去找到这些语句。 在自动查找资源方面,Java 并没有提供一个很好的解决方案,所以最好的办法是直接告诉 MyBatis 到哪里去找映射文件。 可以使用相对于类路径的资源引用,或完全限定资源定位符(包括 file:/// 形式的 URL),或类名和包名等。下面的配置会告诉 MyBatis 去哪里找映射文件


2. SQL映射文件

cache – 该命名空间的缓存配置。
cache-ref – 引用其它命名空间的缓存配置。
resultMap – 描述如何从数据库结果集中加载对象,是最复杂也是最强大的元素。
sql – 可被其它语句引用的可重用语句块。
insert – 映射插入语句。
update – 映射更新语句。
delete – 映射删除语句。
select – 映射查询语句。

2.1. select-映射查询语句

简单的select


        SELECT
        psn.id,
        psn.create_time,
        psn.creator_id,
        psn.creator,
        psn.serial_number,
        psn.specification_model,
        psn.status,
        psn.type,
        psn.update_time,
        psn.update_user_id,
        psn.update_user,
        FROM production AS psn
        LEFT JOIN info AS hi ON psn.info_id=hi.id
        WHERe
        1 = 1
        --include中引用了id为pageProductionCondition的sql。
        
        
            ORDER BY ${enquiryDto.sortColName}
            
                ASC
            
            
                DESC
            
        

2.4. sql标签

这个元素可以用来定义可重用的 SQL 代码片段,以便在其它语句中使用。 参数可以静态地(在加载的时候)确定下来,并且可以在不同的 include 元素中定义不同的参数值。此


        
            
            AND psn.serial_number LIKE #{pattern1}
        
        
            
            AND hi.imei LIKE #{pattern2}
        
        
            AND psn.production_batch = #{enquiryDto.productionBatch}
        
        
            AND psn.specification_model = #{enquiryDto.specificationModel}
        
        
            AND psn.status = #{enquiryDto.status}
        
        
            AND psn.type = #{enquiryDto.type}
        

2.5. 理解复杂select与sql

DISTINCT, isnull()与CAST()函数