SQL模板支持默认值
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
## SQL模板
|
||||
  Redkale中的SQL模板与Mybatis里的SQL模板用法类似, 最大区别在于不需要写很多```if/else```判断语句,也不用写xml文件, 框架会根据参数存在与否动态生成sql语句, 查询结果时下划线式sql字段名和驼峰式类字段名会自动匹配。
|
||||
```sql
|
||||
SELECT * FROM user WHERE user_id IN ${bean.userIds} OR user_name = ${bean.userName}
|
||||
SELECT * FROM user WHERE user_id IN #{bean.userIds} OR user_name = #{bean.userName}
|
||||
```
|
||||
  当bean.userIds=null,bean.userName='hello'时,sql语句转换成:
|
||||
```sql
|
||||
@@ -18,9 +18,20 @@
|
||||
```sql
|
||||
SELECT * FROM user WHERE 1=2 OR user_name = 'hello'
|
||||
```
|
||||
  有些场景要求参数是必需的,就需要使用$${}来校验参数是否必需。
|
||||
  参数支持默认值,用逗号隔开,非String参数类型主要指定数据类型,目前支持(int)、(long)、(short)、(float)、(double), 参数不存在会使用默认值aaa:
|
||||
```sql
|
||||
DELETE FROM user WHERE user_name = $${bean.userName}
|
||||
DELETE FROM user WHERE user_name = #{bean.userName,aaa}
|
||||
```
|
||||
  IN参数也支持默认值:
|
||||
```sql
|
||||
DELETE FROM user WHERE type IN #{types,(1, 2, 3)}
|
||||
DELETE FROM user WHERE type IN (1, 2, #{type, (int)3})
|
||||
DELETE FROM user WHERE user_name IN #{name, ('aa','bb','cc')}
|
||||
DELETE FROM user WHERE user_name ('aa', 'bb', #{type,cc})
|
||||
```
|
||||
  有些场景要求参数是必需的,就需要使用##{}来校验参数是否必需。
|
||||
```sql
|
||||
DELETE FROM user WHERE user_name = ##{bean.userName}
|
||||
```
|
||||
  当bean=null或者bean.userName=null时,执行sql会报错 ```Missing parameter bean.userName```
|
||||
|
||||
@@ -32,15 +43,15 @@ public class ForumInfoService extends AbstractService {
|
||||
private static final String findSql = "SELECT f.forum_groupid, s.forum_section_color "
|
||||
+ "FROM forum_info f, forum_section s "
|
||||
+ " WHERE f.forumid = s.forumid AND "
|
||||
+ "s.forum_sectionid = ${bean.forumSectionid} AND "
|
||||
+ "f.forumid = ${bean.forumid} AND s.forum_section_color = ${bean.forumSectionColor}";
|
||||
+ "s.forum_sectionid = #{bean.forumSectionid} AND "
|
||||
+ "f.forumid = #{bean.forumid} AND s.forum_section_color = #{bean.forumSectionColor}";
|
||||
|
||||
//查询列表记录的sql
|
||||
private static final String querySql = "SELECT f.forum_groupid, s.forum_section_color "
|
||||
+ "FROM forum_info f, forum_section s "
|
||||
+ " WHERE f.forumid = s.forumid AND "
|
||||
+ "s.forum_sectionid = ${bean.forumSectionid} AND "
|
||||
+ "f.forumid = ${bean.forumid} AND s.forum_section_color = ${bean.forumSectionColor}";
|
||||
+ "s.forum_sectionid = #{bean.forumSectionid} AND "
|
||||
+ "f.forumid = #{bean.forumid} AND s.forum_section_color = #{bean.forumSectionColor}";
|
||||
|
||||
@Resource
|
||||
private DataSqlSource source;
|
||||
@@ -68,17 +79,17 @@ public interface ForumInfoMapper extends BaseMapper<ForumInfo> {
|
||||
@Sql("SELECT f.forum_groupid, s.forum_section_color "
|
||||
+ "FROM forum_info f, forum_section s "
|
||||
+ "WHERE f.forumid = s.forumid "
|
||||
+ "AND s.forum_sectionid = ${bean.forumSectionid} "
|
||||
+ "AND f.forumid = ${bean.forumid} "
|
||||
+ "AND s.forum_section_color = ${bean.forumSectionColor}")
|
||||
+ "AND s.forum_sectionid = #{bean.forumSectionid} "
|
||||
+ "AND f.forumid = #{bean.forumid} "
|
||||
+ "AND s.forum_section_color = #{bean.forumSectionColor}")
|
||||
public ForumResult findForumResultOne(ForumBean bean);
|
||||
|
||||
@Sql("SELECT f.forum_groupid, s.forum_section_color "
|
||||
+ "FROM forum_info f, forum_section s "
|
||||
+ "WHERE f.forumid = s.forumid AND "
|
||||
+ "s.forum_sectionid = ${bean.forumSectionid} "
|
||||
+ "AND f.forumid = ${bean.forumid} "
|
||||
+ "AND s.forum_section_color = ${bean.forumSectionColor}")
|
||||
+ "s.forum_sectionid = #{bean.forumSectionid} "
|
||||
+ "AND f.forumid = #{bean.forumid} "
|
||||
+ "AND s.forum_section_color = #{bean.forumSectionColor}")
|
||||
public CompletableFuture<ForumResult> findForumResultOneAsync(ForumBean bean);
|
||||
|
||||
//翻页查询
|
||||
@@ -91,7 +102,7 @@ public interface ForumInfoMapper extends BaseMapper<ForumInfo> {
|
||||
|
||||
@Sql("UPDATE forum_section s "
|
||||
+ " SET s.forum_sectionid = '' "
|
||||
+ " WHERE s.forum_section_color = $${bean.forumSectionColor}")
|
||||
+ " WHERE s.forum_section_color = ##{bean.forumSectionColor}")
|
||||
public int updateForumResult(@Param("bean") ForumBean bean0);
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user