MyBatis动态拼接SQL

深碍√TFBOYSˉ_ 2023-10-11 19:49 340阅读 0赞

通过使用MyBatis提供的标签方法可以实现动态SQL拼接

1***if*标签**

de83c80edacb4e04a02c2b490136b3a0.png

  1. <include refid="temp_sql"></include>这里代表select * from t_user

以上sql语句表示,如果money不为空或者money不是空字符串并且大于1000输出结果,否则输出查询所有

  1. <select id="selectByMoney" resultType="demo.entity.User">
  2. <include refid="temp_sql"></include>
  3. <where>
  4. <if test="money!=null and money!=''">
  5. and money>1000
  6. </if>
  7. </where>
  8. </select>

2***where*标签**

  1. <select id="selectByMoney" resultType="demo.entity.User">
  2. <include refid="temp_sql"></include>
  3. <where>
  4. <if test="money!=null and money!=''">
  5. and money>1000
  6. </if>
  7. </where>
  8. </select>

where标签的作用是可以自动处理掉第一个and(可以参考if标ids为QueryVO对象的属性,属性的类型为List。foreach标签签

c6a2b630f5244d05a7ae14db69135488.png

3***foreach*标签通过*POJO*传递*List*集合**

48fb38570db94cc88306945384c06838.png

90960d5ef78748ca8b8026df4405ac27.png

这里foreach相当于字符串拼接,但是不同的是open代表开始,item为里面放的内容,separaton代表以什么东西来分隔,close代表关闭

  1. <select id="selectByids" resultType="demo.entity.User">
  2. <include refid="temp_sql"></include>
  3. <where>
  4. <foreach collection="ids" open="and id in(" item="id" separator="," close=")">
  5. #{id}
  6. </foreach>
  7. </where>
  8. </select>

4**sql标签**

6ed4a8db7a8347d9a7866a6edf99334c.png

334b4d3a3fc34fff9f48d83522e17d25.png

将sql语句中放入标签中,可以除去繁琐的代码过程,下面可以调用

5**sql查询标签封装resultType(实体类路径)**

5ce6e52d3594424696447126a78d9856.png

将相关配置放入application.yml文件中加入

  1. type-aliases-package: demo.entity

后面黄色方框内容为路径,对应为实体类第一行package

97dd1974c0354480aa6083a50527e161.png

这样 resultType(实体类路径)就只写类名就行

9e44d1c58e8e485b82791b27bce0ea19.png

如图所示

发表评论

表情:
评论列表 (有 0 条评论,340人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Mybatis动态拼接sql

    Mybatis动态拼接sql 需求:查询某张表时条件不确定,可能有一个,可能有多个,也可能没有条件 <!-- 动态sql --> <select id="