mybatis自定义join和模糊查询

摘要:
关于mybatis通过连接数据库生成的地图当xml不能满足我们的查询条件时,我们需要定制一个查询函数。您需要将我们要连接的两个表的字段信息添加到生成的xml文件然后在xml文件中实现用户定义的sql。以下两个定义的参数必须预先设置为该状态。否则,SQL总是报告错误——您必须注意模糊查询的语法格式--˃˂iftest=“表达式。

关于mybatis通过和数据库连接生成的map.xml不能满足我们的查询条件的时候,我们要做的就是自定义一个查询的功能。

(1)需要在生成的xml文件当中添加我们想要join的两张表的字段信息。

<resultMap id="queryForListMap" type="com.report.pojo.RuleRunResult">
        <id column="INTERNAL_ID" property="internalId" jdbcType="INTEGER" />
        <result column="FIELD_CHECK_CONF_ID" property="fieldCheckConfId"  jdbcType="INTEGER" />
        <result column="BUSINESS_DATE" property="businessDate" jdbcType="DATE" />
        <result column="FACT_EXPRESSION" property="factExpression" jdbcType="VARCHAR" />
        <result column="FACT_RULE_WHERE" property="factRuleWhere" jdbcType="VARCHAR" />
        <result column="RUN_RESULT" property="runResult" jdbcType="VARCHAR" />
        <result column="ADD_TIME" property="addTime" jdbcType="TIMESTAMP" />
        <association property="fieldCheckConf" javaType="com.report.pojo.FieldCheckConf">
            <id column="INTERNAL_ID" property="internalId" jdbcType="INTEGER" />
            <result column="RULE_CONF_ID" property="ruleConfId" jdbcType="INTEGER" />
            <result column="RULE_NAME" property="ruleName" jdbcType="VARCHAR" />
            <result column="FACT_EXPRESSION" property="factExpression" jdbcType="VARCHAR" />
            <result column="FACT_RULE_WHERE" property="factRuleWhere" jdbcType="VARCHAR" />
            <result column="ADD_TIME" property="addTime" jdbcType="TIMESTAMP" />
        </association>

    </resultMap>

(2)然后在xml文件当中实现自定义的sql(代码如下)

下面这两个定义的参数一定要提前设置成这个样子。要不然的话一直其实sql报错。

     ruleName = "%"+ruleName+"%";
    expression = "%"+expression+"%";

<select id="queryForList" resultMap="queryForListMap">
        SELECT
        *
        FROM
        RULE_RUN_RESULT r
        LEFT JOIN
        FIELD_CHECK_CONF f
        ON
        f.INTERNAL_ID = r.FIELD_CHECK_CONF_ID
        <where>
            <if test="ruleName != null and ruleName != ''">AND f.RULE_NAME like "${ruleName}" <!--这里一定要注意模糊查询的时候的语法格式 -->
            </if>
            <if test="expression != null and expression != ''">AND r.FACT_EXPRESSION like "${expression}"</if>
        </where>
</select>

 总结:总的来说基本个的思路是不难实现的,但是在整个过程当中一定要注意我们使用的where查询条件模糊查询的配置百分号的写法。要不要会浪费很多时间的。

免责声明:文章转载自《mybatis自定义join和模糊查询》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ant的javac任务的相关属性配置Kubernetes增强型调度器Volcano算法分析下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Spring Boot(七):Mybatis 多数据源最简解决方案

说起多数据源,一般都来解决那些问题呢,主从模式或者业务比较复杂需要连接不同的分库来支持业务。我们遇到的情况是后者,网上找了很多,大都是根据 Jpa 来做多数据源解决方案,要不就是老的 Spring 多数据源解决方案,还有的是利用 Aop 动态切换,感觉有点小复杂,其实我只是想找一个简单的多数据支持而已,折腾了两个小时整理出来,供大家参考。 废话不多说直接上...

利用mybatis连接mysql数据库进行数据的操作

整体结构如下: 首先写大配置,该配置的作用是连接数据库。    可以将连接数据库的方法单独提出来,写在jdbc.propterties中,代码如下: jdbc.driver=com.mysql.jdbc.Driver //加载驱动jdbc.url=jdbc:mysql://localhost:3306/school //连接mysql数据库jdbc...

mybatis常用的模糊查询

常用的模糊查询有三种方法:直接使用 % 拼接字符串,如 '%'#{name}'%' 或 "%"#{name}"%",单引号或双引号都可以。使用concat(str1,str2)函数拼接使用mybatis的bind标签<!-- ******************** 模糊查询的常用的3种方式:********************* -->...

mybatis传入多个参数

需要查阅本文的基本都是需要传入多个参数的,这里记住一句话:无论你传的参数是什么样的,最后mybtis都会将你传入的转换为map的,那么既然这样,当我们要传入多个参数时,何不直接给与map类型即可,然后mapper.xml通过#{map.key}来获取值即可,这个特别适合动态搜索,或者多个参数的查询,并且可以在mapper的xml语句中通过if判断来实现若为...

MyBatis学习(五)MyBatis-开启log4j日志

1、前言 Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地...

03_mybatis配置文件详解

1. SqlMapConfig.xml mybatis全局配置文件SqlMapConfig.xml,配置内容如下: *properties(属性) setting(全局配置参数) typeAliases(类型别名) typeHandlers(类型处理器) plugins(插件) enviroments(环境集合对象) ​ enviroment(环境子属性对...