执行拼接SQL的java书写方式

时间:2025-02-21 13:19:20

文章目录

  • 前言
  • 一、SQL拼接方法
    • 1、直接字符串拼接
    • 2、使用进行拼接
  • 二、执行方式
    • 1、使用xml文件
    • 2、使用@SelectProvider注解
  • 其他


前言

项目上遇到一个功能需要对用户输入的数据表进行各种操作,这个时候需要自己拼接SQL然后执行。
拼接方法有两种:

  • 直接用字符串自己拼接,这种方法要特别注意前后空格。
  • 使用进行拼接。

执行方法我现在发现两种:

  • 放入中用${sqlText}进行执行。
  • 使用mabtis的注解@SelectProvider等进行执行。

一、SQL拼接方法

1、直接字符串拼接

注意前后空格

StringBuilder sql = new StringBuilder("SELECT * ");
(()).append(" ");
("from ").append(()).append(" ");
("where ").append(" 1 = 1");
String sqlText = ();

2、使用进行拼接

SQL sql = new SQL()
        .SELECT(columns)
        .FROM(tableName)
        .WHERE("1=1");
String sqlText = ();

这个还有另一种写法,使用双大括号

String sqlText = new SQL(){{
    SELECT(columns);
    FROM(tableName);
    WHERE("1=1");
}}.toString();

二、执行方式

1、使用xml文件

List<Map<String, Object>> executeSql(@Param("sqlText") String sqlText);

<select  resultType="map">
    ${sqlText}
</select>

2、使用@SelectProvider注解

import ;

@SelectProvider(type = , method = "selectSql")
List<Map<String, Object>> executeSql(String columns, String tableName);

需要新建一个类,并且包含selectSql方法,且参数为String columns, String tableName

public class SqlProvider {
    public String selectSql(String columns, String tableName) {
        SQL sql = new SQL()
                .SELECT(columns)
                .FROM(tableName)
                .WHERE("1=1");
        return ();
    }
}

不用创建对应的文件

其他

1、这里只展示了查询的SQL的注解,还有更新、插入\、删除的注解

@InsertProvider
@UpdateProvider
@DeleteProvider