From 9d4f84937111b2eded2c269a6057eac8c1863fea Mon Sep 17 00:00:00 2001 From: thinkgem Date: Thu, 2 Feb 2023 23:17:25 +0800 Subject: [PATCH] 4.6.1 --- .../main/resources/db/upgrade/cms/versions | 3 +- .../java/com/jeesite/test/DaoMapperTest.java | 245 +++++++++++------- 2 files changed, 154 insertions(+), 94 deletions(-) diff --git a/modules/cms/src/main/resources/db/upgrade/cms/versions b/modules/cms/src/main/resources/db/upgrade/cms/versions index 1e1b0216..6c7d16d3 100644 --- a/modules/cms/src/main/resources/db/upgrade/cms/versions +++ b/modules/cms/src/main/resources/db/upgrade/cms/versions @@ -14,4 +14,5 @@ 4.4.0 4.4.1 4.5.0 -4.6.0 \ No newline at end of file +4.6.0 +4.6.1 \ No newline at end of file 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 70327be0..773c63d9 100644 --- a/modules/core/src/test/java/com/jeesite/test/DaoMapperTest.java +++ b/modules/core/src/test/java/com/jeesite/test/DaoMapperTest.java @@ -4,34 +4,24 @@ */ package com.jeesite.test; -import java.util.Date; -import java.util.List; - +import com.jeesite.common.collect.ListUtils; +import com.jeesite.common.entity.DataScope; +import com.jeesite.common.entity.Page; +import com.jeesite.common.idgen.IdGen; +import com.jeesite.common.mybatis.mapper.query.QueryType; +import com.jeesite.common.tests.BaseSpringContextTests; +import com.jeesite.modules.file.dao.FileUploadDao; +import com.jeesite.modules.file.entity.FileUpload; +import com.jeesite.modules.sys.dao.*; +import com.jeesite.modules.sys.entity.*; import org.junit.Assert; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.ActiveProfiles; -import com.jeesite.common.collect.ListUtils; -import com.jeesite.common.entity.DataScope; -import com.jeesite.common.entity.Page; -import com.jeesite.common.mybatis.mapper.query.QueryType; -import com.jeesite.common.tests.BaseSpringContextTests; -import com.jeesite.modules.file.dao.FileUploadDao; -import com.jeesite.modules.file.entity.FileUpload; -import com.jeesite.modules.sys.dao.AreaDao; -import com.jeesite.modules.sys.dao.CompanyDao; -import com.jeesite.modules.sys.dao.ConfigDao; -import com.jeesite.modules.sys.dao.DictDataDao; -import com.jeesite.modules.sys.dao.EmpUserDao; -import com.jeesite.modules.sys.dao.UserDao; -import com.jeesite.modules.sys.entity.Area; -import com.jeesite.modules.sys.entity.Company; -import com.jeesite.modules.sys.entity.Config; -import com.jeesite.modules.sys.entity.DictData; -import com.jeesite.modules.sys.entity.EmpUser; -import com.jeesite.modules.sys.entity.User; +import java.util.Date; +import java.util.List; /** * Mapper测试 @@ -56,67 +46,110 @@ public class DaoMapperTest extends BaseSpringContextTests { private FileUploadDao fileUploadDao; @Autowired private EmpUserDao empUserDao; - + @Test public void testTableAnnotation() throws Exception{ try{ - - System.out.println("============ 插入和批量插入测试 ============"); + + System.out.println("============ 插入测试 ============"); Config config = new Config(); config.setId("1"); config.setConfigKey("test"); config.setConfigName("test"); config.setConfigValue("1"); config.setIsSys("1"); + long configInsertNum = configDao.insert(config); + Assert.assertEquals("configDao.insert", configInsertNum , 1); + Config configInsertRes = configDao.get(config); + Assert.assertEquals("configDao.insert result", configInsertRes.getId() , "1"); + + System.out.println("============ 批量插入测试 ============"); Config config2 = (Config)config.clone(); config2.setId("2"); - config.setConfigKey("test2"); + config2.setConfigKey("test2"); Config config3 = (Config)config.clone(); config3.setId("3"); - config.setConfigKey("test3"); - System.out.println(configDao.insert(config)); - System.out.println(configDao.insertBatch(ListUtils.newArrayList(config2, config3))); - - System.out.println("============ 更新测试 ============"); + config3.setConfigKey("test3"); + long configinsertBatchNum = configDao.insertBatch(ListUtils.newArrayList(config2, config3)); + Assert.assertEquals("configDao.insertBatch", configinsertBatchNum , 2); + Config configInsertBatchRes2 = configDao.get(config2); + Assert.assertEquals("configDao.insertBatch result", configInsertBatchRes2.getId() , "2"); + Config configInsertBatchRes3 = configDao.get(config3); + Assert.assertEquals("configDao.insertBatch result", configInsertBatchRes3.getId() , "3"); + + System.out.println("============ 按主键更新测试 ============"); Area area = new Area(); area.setAreaCode("1"); area.setAreaName("你好"); + area.setParentCode("0"); + area.setParentCodes("0,"); + area.setTreeSort(1); + area.setTreeSorts("1,"); + area.setTreeLevel(0); + area.setTreeLeaf("1"); + area.setTreeNames(area.getAreaName()); area.setStatus("0"); + Area area2 = (Area) area.clone(); + area2.setAreaCode("2"); + Area area3 = (Area) area.clone(); + area3.setAreaCode("3"); + long areaInsertNum = areaDao.insertBatch(ListUtils.newArrayList(area, area2, area3)); + Assert.assertEquals("areaDao.insert", areaInsertNum , 3); + area.setAreaName("你好2"); + long areaUpdateNum = areaDao.update(area); + Assert.assertEquals("areaDao.update", areaUpdateNum , 1); + Area areaUpdateRes = areaDao.get(area); + Assert.assertEquals("areaDao.update result", areaUpdateRes.getAreaName() , "你好2"); + + System.out.println("============ 按主键批量更新测试 ============"); + long areaUpdateBatchNum = areaDao.updateBatch(ListUtils.newArrayList(area2, area3)); + Assert.assertEquals("areaDao.update", areaUpdateBatchNum , 2); + + System.out.println("============ 自定义更新条件测试 ============"); Area where = new Area(); - where.setId("2"); - where.setId_in(new String[]{"1","2"}); - where.setAreaName("你好2"); - where.setStatus("0"); - System.out.println(areaDao.update(area)); - System.out.println(areaDao.updateByEntity(area, where)); - System.out.println(areaDao.updateStatus(area)); - System.out.println(areaDao.updateStatusByEntity(area, where)); - + where.setId(areaUpdateRes.getId()); + where.setId_in(new String[]{areaUpdateRes.getId()}); + where.setAreaName(areaUpdateRes.getAreaName()); + where.setStatus(areaUpdateRes.getStatus()); + long areaUpdateByEntityNum = areaDao.updateByEntity(area, where); + Assert.assertEquals("areaDao.updateByEntity", areaUpdateByEntityNum , 1); + + System.out.println("============ 更新数据状态测试 ============"); + long areaStatusNum = areaDao.updateStatus(area); + Assert.assertEquals("areaDao.updateStatus", areaUpdateByEntityNum , 1); + long areaStatusByEntityNum = areaDao.updateStatusByEntity(area, where); + Assert.assertEquals("areaDao.updateStatusByEntity", areaUpdateByEntityNum , 1); + System.out.println("============ 逻辑删除测试 ============"); - System.out.println(areaDao.delete(area)); - System.out.println(areaDao.delete((Area)where.clone())); - System.out.println(areaDao.deleteByEntity((Area)where.clone())); + long areaDeleteNum = areaDao.delete(area); + Assert.assertEquals("areaDao.delete", areaDeleteNum , 1); + where.setStatus("1"); + long areaDeleteByEntityNum = areaDao.deleteByEntity(where); + Assert.assertEquals("areaDao.deleteByEntity", areaDeleteByEntityNum , 1); System.out.println("============ 物理删除测试 ============"); - System.out.println(areaDao.phyDelete((Area)where.clone())); - System.out.println(areaDao.phyDeleteByEntity((Area)where.clone())); + long areaPhyDeleteNum = areaDao.phyDelete(area2); + Assert.assertEquals("areaDao.phyDelete", areaPhyDeleteNum , 1); + long areaPhyDeleteByEntityNum = areaDao.phyDeleteByEntity(area3); + Assert.assertEquals("areaDao.phyDeleteByEntity", areaPhyDeleteByEntityNum , 1); - System.out.println("============ 基本信息查询测试 ============"); - System.out.println(areaDao.findList(area)); + System.out.println("============ 基本查询测试 ============"); + List areaList = areaDao.findList(area); + Assert.assertEquals("areaDao.findList", areaList.size() , 1); User user = new User(); user.setUserType(User.USER_TYPE_NONE); - System.out.println(userDao.findList(user)); - + List userList = userDao.findList(user); + Assert.assertTrue("userDao.findList", userList.size() > 0); + System.out.println("============ 条件嵌套,日期范围,自定义sqlMap测试 ============"); Company company = new Company("1"); company.setCompanyName("a"); company.setCreateDate_gte(new Date()); company.setCreateDate_lte(new Date()); - company.setArea(new Area("2")); - company.getArea().setAreaName("a"); - company.getArea().setCreateDate_gte(new Date()); - company.getArea().setCreateDate_lte(new Date()); - company.setFullName("a"); + company.setArea(areaList.get(0)); + company.getArea().setCreateDate_gte(company.getCreateDate_gte()); + company.getArea().setCreateDate_lte(company.getCreateDate_gte()); + company.setFullName(IdGen.nextId()); company.setViewCode("1"); company.setParentCode("0"); company.setParentCodes("0,"); @@ -124,47 +157,73 @@ public class DaoMapperTest extends BaseSpringContextTests { company.setTreeSorts("1,"); company.setTreeLevel(0); company.setTreeLeaf("1"); - company.setTreeNames("a"); - System.out.println(companyDao.insert(company)); - System.out.println(companyDao.get(company)); - System.out.println(companyDao.findCount(company)); - + company.setTreeNames(company.getCompanyName()); + Company company2 = (Company) company.clone(); + company2.setParentCode(company.getCompanyCode()); + company2.setParentCodes("0,1," + company.getCompanyCode()); + company2.setCompanyCode("12"); + Company company3 = (Company) company.clone(); + company3.setParentCode(company.getCompanyCode()); + company3.setParentCodes("0,1," + company.getCompanyCode()); + company3.setCompanyCode("13"); + company3.setCompanyName("b"); + long companyInsertNum = companyDao.insertBatch(ListUtils.newArrayList(company, company2, company3)); + Assert.assertEquals("advanced query init", companyInsertNum , 3); + Company companyWhere = (Company) company.clone(); + companyWhere.setCompanyCode(null); + companyWhere.setParentCode(null); + long companyFindCount = companyDao.findCount(companyWhere); + Assert.assertEquals("advanced query list", companyFindCount , 2); + System.out.println("============ 分页测试,查询子节点 ============"); - company.setPage(new Page(1, 20)); - company.setIsQueryChildren(true); - System.out.println(companyDao.findList(company)); - + Company company4 = new Company("1"); + company4.setFullName(company.getFullName()); + company4.setPage(new Page(1, 2)); + company4.setIsQueryChildren(true); + List companyListPage = companyDao.findList(company4); + Assert.assertEquals("find page list size", companyListPage.size(), 2); + Assert.assertEquals("find page list get(1)", companyListPage.get(1).getCompanyCode(), company2.getCompanyCode()); + Assert.assertEquals("find page count", company4.getPage().getCount(), 3); + System.out.println("============ 扩展条件语句前带AND容错测试 ============"); - Company company2 = new Company(); - company2.getSqlMap().getWhere().disableAutoAddStatusWhere(); - company2.getSqlMap().getDataScope().addFilter("dsf", + Company company5 = new Company(); + company5.getSqlMap().getWhere().disableAutoAddStatusWhere(); + company5.getSqlMap().getDataScope().addFilter("dsf", "Company", "a.`company_code`", DataScope.CTRL_PERMI_HAVE); - System.out.println(companyDao.findList(company2)); + List companyList = companyDao.findList(company5); + System.out.println(companyList); + Assert.assertEquals("companyDao.findList extWhere", companyList.size(), 0); System.out.println("============ 联合查询未设定columns和attrName为this时测试 ============"); FileUpload fileUpload = new FileUpload(); fileUpload.getSqlMap().getWhere().and("u.`user_name`", QueryType.EQ, "user1"); - System.out.println(fileUploadDao.findList(fileUpload)); - + List fileUploadList = fileUploadDao.findList(fileUpload); + System.out.println(fileUploadList); + Assert.assertEquals("fileUploadDao.findList attrName this", fileUploadList.size(), 0); + System.out.println("============ 树结构基本查询测试 ============"); DictData dictData = new DictData(); dictData.setParentCodes("0,"); - System.out.println(dictDataDao.findByParentCodesLike(dictData)); - System.out.println(dictDataDao.findList(dictData)); + List dictDataList = dictDataDao.findByParentCodesLike(dictData); + Assert.assertTrue("dictDataDao.findByParentCodesLike", dictDataList.size() > 0); + List dictDataList2 = dictDataDao.findList(dictData); + System.out.println(dictDataList2); + Assert.assertTrue("dictDataDao.findList", dictDataList2.size() > 0); System.out.println("============ 分页情况下foreach测试 ============"); EmpUser empUser = new EmpUser(); empUser.setCodes(new String[]{"SDJN01","SDJN02"}); empUser.setPage(new Page<>(1, 3)); - List list = empUserDao.findUserListByOfficeCodes(empUser); - System.out.println(list); - + List empUserList = empUserDao.findUserListByOfficeCodes(empUser); + System.out.println(empUserList); + Assert.assertTrue("empUserDao.findUserListByOfficeCodes", empUserList.size() > 0); + }catch(Exception e){ e.printStackTrace(); throw new Exception(e); } } - + public static void main(String[] args) { String a = null, b = null; System.out.println("============ 基本测试 ============"); @@ -172,25 +231,25 @@ public class DaoMapperTest extends BaseSpringContextTests { .getWhere().and("name", QueryType.EQ, "abc").toSql(); b = "a.`id` = #{sqlMap.where#id#EQ1} AND a.name = #{sqlMap.where.name#EQ1.val}"; System.out.println("a >> "+a);System.out.println("b >> "+b);Assert.assertEquals(a, b); - + a = new Config("1").getSqlMap().getWhere() .and("name", QueryType.IN, new String[]{"1", "2", "3"}).toSql(); b = "a.`id` = #{sqlMap.where#id#EQ1} AND a.name IN ( #{sqlMap.where.name#IN1.val[0]}," + " #{sqlMap.where.name#IN1.val[1]}, #{sqlMap.where.name#IN1.val[2]} )"; System.out.println("a >> "+a);System.out.println("b >> "+b);Assert.assertEquals(a, b); - + a = new Config("1").getSqlMap().getWhere() .or("name", QueryType.IN, new String[]{"1", "2", "3"}).toSql(); b = "a.`id` = #{sqlMap.where#id#EQ1} OR a.name IN ( #{sqlMap.where.name#IN1.val[0]}," + " #{sqlMap.where.name#IN1.val[1]}, #{sqlMap.where.name#IN1.val[2]} )"; System.out.println("a >> "+a);System.out.println("b >> "+b);Assert.assertEquals(a, b); - + System.out.println("============ 重复赋值测试 ============"); a = new Config("1").getSqlMap().getWhere() .and("name", QueryType.LIKE, "abc").and("name", QueryType.LIKE, "def").toSql(); b = "a.`id` = #{sqlMap.where#id#EQ1} AND a.name LIKE #{sqlMap.where.name#LIKE1.val}"; System.out.println("a >> "+a);System.out.println("b >> "+b);Assert.assertEquals(a, b); - + System.out.println("============ IN、NOT IN 测试 ============"); a = new Config("1").getSqlMap().getWhere() .and("name", QueryType.IN, new String[]{"abc","def"}) @@ -198,21 +257,21 @@ public class DaoMapperTest extends BaseSpringContextTests { b = "a.`id` = #{sqlMap.where#id#EQ1} AND a.name IN ( #{sqlMap.where.name#IN1.val[0]}, #{sqlMap.where.name#IN1.val[1]} )" + " AND a.name2 NOT IN ( #{sqlMap.where.name2#NOT_IN1.val[0]}, #{sqlMap.where.name2#NOT_IN1.val[1]} )"; System.out.println("a >> "+a);System.out.println("b >> "+b);Assert.assertEquals(a, b); - + a = new Config("1").getSqlMap().getWhere() .and("name", QueryType.IN, null).and("name2", QueryType.IN, new String[]{}) .and("name3", QueryType.NOT_IN, ListUtils.newArrayList()).toSql(); b = "a.`id` = #{sqlMap.where#id#EQ1}"; System.out.println("a >> "+a);System.out.println("b >> "+b);Assert.assertEquals(a, b); - + System.out.println("============ 带括号测试 ============"); a = new Config("1").getSqlMap().getWhere() .andBracket("name", QueryType.EQ, "abc", 1).or("name", QueryType.EQ, "def", 2) - .or("name", QueryType.EQ, "ghi", 3).endBracket().toSql(); + .or("name", QueryType.EQ, "ghi", 3).endBracket().toSql(); b = "a.`id` = #{sqlMap.where#id#EQ1} AND ( a.name = #{sqlMap.where.name#EQ1.val}" + " OR a.name = #{sqlMap.where.name#EQ2.val} OR a.name = #{sqlMap.where.name#EQ3.val} )"; System.out.println("a >> "+a);System.out.println("b >> "+b);Assert.assertEquals(a, b); - + a = new Config().getSqlMap().getWhere() .andBracket("name", QueryType.EQ, "val1", 1).and("name", QueryType.NE, "val2", 11).endBracket(1) .orBracket("name", QueryType.NE, "val3", 2).and("name", QueryType.NE, "val4", 22).endBracket(2) @@ -222,41 +281,41 @@ public class DaoMapperTest extends BaseSpringContextTests { + " OR ( a.name != #{sqlMap.where.name#NE2.val} AND a.name != #{sqlMap.where.name#NE22.val} )" + " OR ( a.name != #{sqlMap.where.name#NE3.val} AND a.name = #{sqlMap.where.name#EQ33.val} )"; System.out.println("a >> "+a);System.out.println("b >> "+b);Assert.assertEquals(a, b); - + System.out.println("============ 带括号部分空值测试 ============"); a = new Config("1").getSqlMap().getWhere() .andBracket("name", QueryType.EQ, "", 1).or("name", QueryType.EQ, "def", 2) - .or("name", QueryType.EQ, "", 3).endBracket().toSql(); + .or("name", QueryType.EQ, "", 3).endBracket().toSql(); b = "a.`id` = #{sqlMap.where#id#EQ1} AND ( a.name = #{sqlMap.where.name#EQ2.val} )"; System.out.println("a >> "+a);System.out.println("b >> "+b);Assert.assertEquals(a, b); - + a = new Config("1").getSqlMap().getWhere() .andBracket("name", QueryType.EQ, "abc", 1).or("name", QueryType.EQ, "def", 2) .or("name", QueryType.EQ, "", 3).endBracket().toSql(); b = "a.`id` = #{sqlMap.where#id#EQ1} AND ( a.name = #{sqlMap.where.name#EQ1.val}" + " OR a.name = #{sqlMap.where.name#EQ2.val} )"; System.out.println("a >> "+a);System.out.println("b >> "+b);Assert.assertEquals(a, b); - + a = new Config("1").getSqlMap().getWhere() .andBracket("name", QueryType.EQ, "", 1).or("name", QueryType.EQ, "def", 2) .or("name", QueryType.EQ, "ghi", 3).endBracket().toSql(); b = "a.`id` = #{sqlMap.where#id#EQ1} AND ( a.name = #{sqlMap.where.name#EQ2.val}" + " OR a.name = #{sqlMap.where.name#EQ3.val} )"; System.out.println("a >> "+a);System.out.println("b >> "+b);Assert.assertEquals(a, b); - + System.out.println("============ 带括号全部空值测试 ============"); a = new Config("1").getSqlMap().getWhere() .andBracket("name", QueryType.EQ, "", 1).or("name", QueryType.EQ, "", 2) .or("name", QueryType.EQ, "", 3).endBracket().toSql(); b = "a.`id` = #{sqlMap.where#id#EQ1} "; System.out.println("a >> "+a);System.out.println("b >> "+b);Assert.assertEquals(a, b); - + a = new Config().getSqlMap().getWhere() .andBracket("name", QueryType.EQ, "", 1).or("name", QueryType.EQ, "", 2) .or("name", QueryType.EQ, "", 3).endBracket().toSql(); b = ""; System.out.println("a >> "+a);System.out.println("b >> "+b);Assert.assertEquals(a, b); - + System.out.println("============ 实体嵌套测试 ============"); Company company = new Company("1"); company.setCreateDate_gte(new Date()); @@ -280,7 +339,7 @@ public class DaoMapperTest extends BaseSpringContextTests { a = new FileUpload().getSqlMap().getWhere().and("u.`user_name`", QueryType.EQ, "user1").toSql(); b = "a.`status` != #{STATUS_DELETE} AND u.`user_name` = #{sqlMap.where.u#_user_name_#EQ1.val}"; System.out.println("a >> "+a);System.out.println("b >> "+b);Assert.assertEquals(a, b); - + System.out.println("============ 联合查询,返回到当前实体测试 ============"); FileUpload fileUpload = new FileUpload(); fileUpload.getSqlMap().getWhere().and("create_by", QueryType.IN, new String[]{"user1","user2"}); @@ -288,7 +347,7 @@ public class DaoMapperTest extends BaseSpringContextTests { b = "a.`status` != #{STATUS_DELETE} AND a.create_by IN ( #{sqlMap.where.create_by#IN1.val[0]}," + " #{sqlMap.where.create_by#IN1.val[1]} )"; System.out.println("a >> "+a);System.out.println("b >> "+b);Assert.assertEquals(a, b); - + System.out.println("============ 联合查询,属性为this时也可作为查询条件 ============"); FileUpload fileUpload2 = new FileUpload(); fileUpload2.setCreateByName("ThinkGem/JeeSite"); @@ -297,7 +356,7 @@ public class DaoMapperTest extends BaseSpringContextTests { b = "a.`status` != #{STATUS_DELETE} AND a.create_by IN ( #{sqlMap.where.create_by#IN1.val[0]}," + " #{sqlMap.where.create_by#IN1.val[1]} ) AND u.`user_name` LIKE #{sqlMap.where#user_name#LIKE1}"; System.out.println("a >> "+a);System.out.println("b >> "+b);Assert.assertEquals(a, b); - + System.exit(0); } }