前言

我们 可以控制sql 在Mybatis的 xml 映射文件里面。Mybatis 也提供了很多标记来帮助我们动态生成Sql 语句,比如 <if>, <foreach> 等等。 但是在我们使用中仍然是觉得不够灵活。

举个例子: 我们想要查询学生表, 第一个筛选是我需要通过学生的id 唯一找到这个学生;第二个筛选是我要找年龄大于10岁的学生。 通常的情况下我们不得不写出两个 <select>

<select id="getStudentById">
    SELECT * FROM student WHERE ID = #{id}
</select>
<select id="getStudentsAgeGreaterThan10">
    SELECT * FROM student WHERE age > 10
</select>

我们看到了这里其实只是where 条件不同,就需要写两个select, 如果筛选条件多了那么在 xml文件 会有很多代码, 更可怕的是 xml文件是一种弱类型的编辑,如果你写错了是很难排查出来的。

所以如果用mybatis-dynamic-query 我们只用一个select 描述筛选查询:

<select id="getStudentByDynamic" parameterType="java.util.Map">
    SELECT * FROM student
    <if test="whereExpression != null and whereExpression != ''">WHERE ${whereExpression}</if>
</select>

项目

项目地址: https://github.com/wz2cool/mybatis-dynamic-query

Maven:

<dependency>
    <groupId>com.github.wz2cool</groupId>
    <artifactId>mybatis-dynamic-query</artifactId>
    <version>2.0.0</version>
</dependency>

results matching ""

    No results matching ""