mybatis自定义join和模糊查询

关于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查询条件模糊查询的配置百分号的写法。要不要会浪费很多时间的。

原文地址:https://www.cnblogs.com/gxgd/p/8963675.html

时间: 2025-01-06 19:22:36

mybatis自定义join和模糊查询的相关文章

spring boot中mybatis使用注解进行模糊查询

小白一枚,spring boot 2.0.5在使用mybatis进行注解模糊查询时遇到一些低级的错误,现记录下来错误示例:"select * from user where name like \""#{name}\""这个错误报Parameter index out of range (1 > number of parameters, which is 0): 经过百度查询其它的得到这条sql语句,虽然能查出来,但是是全部数据都查出来了"

【Mybatis】【3】mybatis Example Criteria like 模糊查询

正文: 在Java中使用Mybatis自动生成的方法,like需要自己写通配符 public List<TableA> query(String name) { Example example = new Example(TableA.class); example.createCriteria() .andLike("name", "%"+ name +"%"); example.setOrderByClause("CRE

MyBatis Plus之like模糊查询中包含有特殊字符(_、\、%)

传统的解决思路:自定义一个拦截器,当有模糊查询时,模糊查询的关键字中包含有上述特殊字符时,在该特殊字符前添加\进行转义处理. 新的解决思路:将like 替换为 MySQL内置函数locate函数 一.问题提出 使用MyBatis中的模糊查询时,当查询关键字中包括有_.\.%时,查询关键字失效. 二.问题分析 1.当like中包含_时,查询仍为全部,即 like '%_%'查询出来的结果与like '%%'一致,并不能查询出实际字段中包含有_特殊字符的结果条目2.like中包括%时,与1中相同3.

MyBatis动态SQL与模糊查询

sqlxml <?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="PersonCondition"&

mybatis 全查 分页 模糊查询一体

<!-- 全查 分页 模糊--> <select id="selectAll" resultMap="BaseResultMap" > SELECT NOTICE_ID,NOTICE_TITLE,TYPE,DATETIME FROM pt_notice <where> <if test=" type != null and type != '' "> <bind name="fTyp

Mybatis中的like模糊查询

1.  参数中直接加入%% param.setUsername("%CD%");      param.setPassword("%11%"); <select id="selectPersons" resultType="person" parameterType="person"> select id,sex,age,username,password from person where t

Mybatis使用MySQL模糊查询时输入中文检索不到结果怎么办--转自http://www.jb51.net/article/88236.htm

这篇文章主要介绍了Mybatis使用MySQL模糊查询时输入中文检索不到结果的解决办法的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下 项目开发中,在做Mybatis动态查询时,遇到了一个问题:MySQL在进行LIKE模糊查询时,输入英文可以正常检索出结果,但是输入中文后检索得到的结果为空. 由于是使用GET方式请求,所以为了确保中文不乱码,在控制台接收到请求参数后,对中文进行了一次编码. ? 1 2 3 4 5 try { realName = new String(realNam

mybatis like 模糊查询

Mybatis用like进行模糊查询的时候,配置与所用的数据库有关系,总结了下,具体如下: 1.MySQL :LIKE CONCAT('%',#{empname},'%' ) 2.Oracle:LIKE '%'||#{empname}||'%'

Mybatis中模糊查询使用中文无法查询

解决Mybatis中模糊查询使用中文关键字无法查询 解决方法: 在mybatis中,采用模糊查询时,如果使用中文查询则无法查询出结果:采用英文则可以 解决方法:在sqlconfig.xml中:url的value值的后面加上?useUnicode=true&characterEncoding=UTF-8 原文地址:https://www.cnblogs.com/bestjdg/p/12043867.html