文章目录
- 前言
- 一、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