From f5af89bef897d9cfd5ae8db23d5d854928b97341 Mon Sep 17 00:00:00 2001 From: thinkgem Date: Mon, 29 Sep 2025 11:38:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=E5=88=86=E7=BB=84?= =?UTF-8?q?=E8=81=9A=E5=90=88=E6=9F=A5=E8=AF=A2=20sqlMap.getGroup().setGro?= =?UTF-8?q?upBy(=E5=88=86=E7=BB=84=E5=AD=97=E6=AE=B5).setHaving(=E5=88=86?= =?UTF-8?q?=E7=BB=84=E6=9D=A1=E4=BB=B6);=E4=BC=98=E5=8C=96=20=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E6=9D=83=E9=99=90=E6=8E=92=E9=99=A4=E6=96=B9=E6=B3=95?= =?UTF-8?q?=20setExcludeAttrNames=EF=BC=8C=E6=94=AF=E6=8C=81=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=20*=20=E6=8E=92=E9=99=A4=E6=89=80=E6=9C=89=E5=88=97;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/jeesite/test/DaoMapperTest.java | 64 +++++++++++++------ 1 file changed, 43 insertions(+), 21 deletions(-) diff --git a/modules/core/src/test/java/com/jeesite/test/DaoMapperTest.java b/modules/core/src/test/java/com/jeesite/test/DaoMapperTest.java index 3ecf3273..42a3931e 100644 --- a/modules/core/src/test/java/com/jeesite/test/DaoMapperTest.java +++ b/modules/core/src/test/java/com/jeesite/test/DaoMapperTest.java @@ -10,6 +10,8 @@ import com.jeesite.common.entity.DataScope; import com.jeesite.common.entity.Page; import com.jeesite.common.idgen.IdGen; import com.jeesite.common.lang.DateUtils; +import com.jeesite.common.lang.StringUtils; +import com.jeesite.common.mybatis.mapper.SqlMap; import com.jeesite.common.mybatis.mapper.query.QueryType; import com.jeesite.common.tests.BaseSpringContextTests; import com.jeesite.modules.file.dao.FileUploadDao; @@ -242,10 +244,24 @@ public class DaoMapperTest extends BaseSpringContextTests { EmpUser empUser = new EmpUser(); empUser.setCodes(new String[]{"SDJN01","SDJN02"}); empUser.setPage(new Page<>(1, 3)); + empUser.sqlMap().getColumn().addExtSql("num", "COUNT(1) as num"); + empUser.sqlMap().getGroup().setGroupBy("a.emp_id, a.emp_code"); List empUserList = empUserDao.findUserListByOfficeCodes(empUser); System.out.println(empUserList); Assert.assertFalse("empUserDao.findUserListByOfficeCodes", empUserList.isEmpty()); + System.out.println("============ 分组查询 5.14.0 ============"); + Post postGroup = new Post(); + SqlMap sqlMap = postGroup.sqlMap(); + sqlMap.getColumn() + .setExcludeAttrNames(SetUtils.newHashSet("*")) + .addExtSql("column", "a.post_type, COUNT(a.post_type) AS typeNum"); + sqlMap.getGroup().setGroupBy("a.post_type").setHaving("COUNT(a.post_type) > 0"); + sqlMap.getOrder().setOrderBy(StringUtils.EMPTY); + List postGroupList = postDao.findList(postGroup); + System.out.println(postGroupList); + Assert.assertFalse("postDao.findList", postGroupList.isEmpty()); + System.out.println("\n===========================================\n"); main(null); @@ -478,28 +494,34 @@ public class DaoMapperTest extends BaseSpringContextTests { Post queryPost = new Post("1"); queryPost.currentUser(new User("system")); queryPost.setPostType("ceo"); - queryPost.sqlMap().getColumn().setExcludeAttrNames(SetUtils.newHashSet("postType")); - queryPost.sqlMap().getColumn().setIncludeAttrNames(SetUtils.newHashSet("postName")); - queryPost.sqlMap().getColumn().addExtSql("c1", "b.column1 AS \"column1\""); - queryPost.sqlMap().getColumn().addExtSql("c2", "c.column2 AS \"column2\""); - queryPost.sqlMap().getTable().addExtSql("t1", "JOIN test1 b ON b.post_code = a.post_code"); - queryPost.sqlMap().getTable().addExtSql("t2", "JOIN test2 c ON b.test_code = a.test_code"); - queryPost.sqlMap().getWhere().addExtSql("w1", "AND b.name1 = '123'"); - queryPost.sqlMap().getWhere().addExtSql("w2", "AND c.name2 = '123'"); - a = "SELECT " + queryPost.sqlMap().getColumn().toSql(); - a += " FROM " + queryPost.sqlMap().getTable().toSql(); - a += " WHERE " + queryPost.sqlMap().getWhere().toSql(); - b = "SELECT a.`corp_code` AS \"corpCode\", a.`corp_name` AS \"corpName\", a.`status` AS \"status\"," + - " a.`create_by` AS \"createBy\", a.`create_date` AS \"createDate\", a.`update_by` AS \"updateBy\"," + - " a.`update_date` AS \"updateDate\", a.`post_name` AS \"postName\"," + - " b.column1 AS \"column1\", c.column2 AS \"column2\"" + + SqlMap sqlMap = queryPost.sqlMap(); + sqlMap.getColumn() + .setExcludeAttrNames(SetUtils.newHashSet("postType", + "createBy", "createDate", "updateBy", "updateDate", "status", "corpCode", "corpName")) + .setIncludeAttrNames(SetUtils.newHashSet("postName")) + .addExtSql("c1", "b.column1 AS \"column1\"") + .addExtSql("c2", "COUNT(c.column2) AS \"column2\""); // 聚合函数 + sqlMap.getTable() + .addExtSql("t1", "JOIN test1 b ON b.post_code = a.post_code") + .addExtSql("t2", "JOIN test2 c ON b.test_code = a.test_code"); + sqlMap.getWhere() + .addExtSql("w1", "AND b.name1 = '123'"); + sqlMap.getGroup() + .setGroupBy("c.name2") // 分组查询 v5.14.0 + .setHaving("COUNT(c.column2) > 0"); // 分组条件 v5.14.0 + a = "SELECT " + sqlMap.getColumn().toSql(); + a += " FROM " + sqlMap.getTable().toSql(); + a += " WHERE " + sqlMap.getWhere().toSql(); + a += " GROUP BY " + sqlMap.getGroup().toSql(); + a += " ORDER BY " + sqlMap.getOrder().toSql(); + b = "SELECT a.`post_name` AS \"postName\", b.column1 AS \"column1\", COUNT(c.column2) AS \"column2\"" + " FROM `js_sys_post` a" + - " JOIN test1 b ON b.post_code = a.post_code" + - " JOIN test2 c ON b.test_code = a.test_code" + - " WHERE a.`status` != #{STATUS_DELETE}" + - " AND a.`post_code` = #{sqlMap.where#post_code#EQ1}" + - " AND a.`post_type` = #{sqlMap.where#post_type#EQ1}" + - " AND b.name1 = '123' AND c.name2 = '123'"; + " JOIN test1 b ON b.post_code = a.post_code" + + " JOIN test2 c ON b.test_code = a.test_code" + + " WHERE a.`status` != #{STATUS_DELETE} AND a.`post_code` = #{sqlMap.where#post_code#EQ1}" + + " AND a.`post_type` = #{sqlMap.where#post_type#EQ1} AND b.name1 = '123'" + + " GROUP BY c.name2 HAVING COUNT(c.column2) > 0" + + " ORDER BY a.post_sort ASC"; System.out.println("a >> "+a);System.out.println("b >> "+b);Assert.assertEquals(b, a); System.exit(0);