diff --git a/modules/core/src/main/resources/mappings/modules/sys/PostDao.xml b/modules/core/src/main/resources/mappings/modules/sys/PostDao.xml index 76fdb406..237bb1d0 100644 --- a/modules/core/src/main/resources/mappings/modules/sys/PostDao.xml +++ b/modules/core/src/main/resources/mappings/modules/sys/PostDao.xml @@ -24,5 +24,25 @@ ORDER BY ${sqlMap.order.toSql()} + + + + + + \ 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 1e00d463..e3bf26c5 100644 --- a/modules/core/src/test/java/com/jeesite/test/DaoMapperTest.java +++ b/modules/core/src/test/java/com/jeesite/test/DaoMapperTest.java @@ -33,7 +33,7 @@ import java.util.List; public class DaoMapperTest extends BaseSpringContextTests { @Autowired - private ConfigDao configDao; + private PostDao postDao; @Autowired private UserDao userDao; @Autowired @@ -41,8 +41,6 @@ public class DaoMapperTest extends BaseSpringContextTests { @Autowired private CompanyDao companyDao; @Autowired - private DictDataDao dictDataDao; - @Autowired private FileUploadDao fileUploadDao; @Autowired private EmpUserDao empUserDao; @@ -52,32 +50,41 @@ public class DaoMapperTest extends BaseSpringContextTests { try{ 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"); + Post post1 = new Post(); + post1.setId("1"); + post1.setPostName("test"); + post1.setPostType("1"); + post1.setPostSort(1); + long postInsertNum = postDao.insert(post1); + Assert.assertEquals("postDao.insert", postInsertNum , 1); + Post postInsertRes = postDao.get(post1); + Assert.assertEquals("postDao.insert result", postInsertRes.getId() , "1"); System.out.println("============ 批量插入测试 ============"); - Config config2 = (Config)config.clone(); - config2.setId("2"); - config2.setConfigKey("test2"); - Config config3 = (Config)config.clone(); - config3.setId("3"); - 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"); + Post post2 = (Post)post1.clone(); + post2.setId("2"); + post2.setPostName("test2"); + Post post3 = (Post)post1.clone(); + post3.setId("3"); + post3.setPostName("test3"); + long postInsertBatchNum = postDao.insertBatch(ListUtils.newArrayList(post2, post3)); + Assert.assertEquals("postDao.insertBatch", postInsertBatchNum , 2); + Post postInsertBatchRes2 = postDao.get(post2); + Assert.assertEquals("postDao.insertBatch result", postInsertBatchRes2.getId() , "2"); + Post postInsertBatchRes3 = postDao.get(post3); + Assert.assertEquals("postDao.insertBatch result", postInsertBatchRes3.getId() , "3"); System.out.println("============ 按主键更新测试 ============"); + Post post4 = new Post("2"); + post4.setPostName("test4"); + long postUpdateNum = postDao.update(post4); + Assert.assertEquals("postDao.update", postUpdateNum , 1); + + System.out.println("============ 按主键删除测试 ============"); + long postDeleteNum = postDao.phyDelete(post4); + Assert.assertEquals("postDao.delete", postDeleteNum , 1); + + System.out.println("============ 按树表更新测试 ============"); Area area = new Area(); area.setAreaCode("1"); area.setAreaName("你好"); @@ -105,7 +112,7 @@ public class DaoMapperTest extends BaseSpringContextTests { Area areaUpdateRes = areaDao.get(area); Assert.assertEquals("areaDao.update result", areaUpdateRes.getAreaName() , "你好2"); - System.out.println("============ 按主键批量更新测试 ============"); + System.out.println("============ 按树表批量更新测试 ============"); long areaUpdateBatchNum = areaDao.updateBatch(ListUtils.newArrayList(area2, area3)); Assert.assertEquals("areaDao.update", areaUpdateBatchNum , 2); @@ -120,9 +127,9 @@ public class DaoMapperTest extends BaseSpringContextTests { System.out.println("============ 更新数据状态测试 ============"); long areaStatusNum = areaDao.updateStatus(area); - Assert.assertEquals("areaDao.updateStatus", areaUpdateByEntityNum , 1); + Assert.assertEquals("areaDao.updateStatus", areaStatusNum , 1); long areaStatusByEntityNum = areaDao.updateStatusByEntity(area, where); - Assert.assertEquals("areaDao.updateStatusByEntity", areaUpdateByEntityNum , 1); + Assert.assertEquals("areaDao.updateStatusByEntity", areaStatusByEntityNum , 1); System.out.println("============ 逻辑删除测试 ============"); long areaDeleteNum = areaDao.delete(area); @@ -209,13 +216,16 @@ public class DaoMapperTest extends BaseSpringContextTests { Assert.assertEquals("fileUploadDao.findList attrName this", fileUploadList.size(), 0); System.out.println("============ 树结构基本查询测试 ============"); - DictData dictData = new DictData(); - dictData.setParentCodes("0,"); - 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); + Area area6 = new Area(); + area6.setParentCodes("0,370000,%"); + List area6List = areaDao.findByParentCodesLike(area6); + System.out.println(area6List); + Assert.assertTrue("areaDao.findByParentCodesLike", !area6List.isEmpty()); + Area area7 = new Area(); + area7.setParentCodes_rightLike("0,370000,"); + List area7List2 = areaDao.findList(area7); + System.out.println(area7List2); + Assert.assertTrue("areaDao.findByParentCodesRightLike", area6List.size() == area7List2.size()); System.out.println("============ 分页情况下foreach测试 ============"); EmpUser empUser = new EmpUser(); @@ -223,7 +233,11 @@ public class DaoMapperTest extends BaseSpringContextTests { empUser.setPage(new Page<>(1, 3)); List empUserList = empUserDao.findUserListByOfficeCodes(empUser); System.out.println(empUserList); - Assert.assertTrue("empUserDao.findUserListByOfficeCodes", empUserList.size() > 0); + Assert.assertTrue("empUserDao.findUserListByOfficeCodes", !empUserList.isEmpty()); + + System.out.println("\n===========================================\n"); + + main(null); }catch(Exception e){ e.printStackTrace(); @@ -233,94 +247,135 @@ public class DaoMapperTest extends BaseSpringContextTests { public static void main(String[] args) { String a = null, b = null; - System.out.println("============ 基本测试 ============"); - a = new Config("1").sqlMap() + System.out.println("============ 插入测试 ============"); + Post insertPost = new Post("1"); + insertPost.setPostName("这是岗位名称"); + insertPost.currentUser(new User("system")); + a = insertPost.sqlMap().getInsert().toTableSql(); + a += insertPost.sqlMap().getInsert().toColumnSql(); + a += insertPost.sqlMap().getInsert().toValuesSql(); + b = "`js_sys_post``status`, `create_by`, `create_date`, `update_by`, `update_date`, `post_code`, `post_name`" + + "#{status}, #{createBy}, #{createDate}, #{updateBy}, #{updateDate}, #{postCode}, #{postName}"; + System.out.println("a >> "+a);System.out.println("b >> "+b);Assert.assertEquals(a, b); + + System.out.println("============ 更新测试 ============"); + Post updatePost = new Post("1"); + updatePost.setPostName("这是岗位名称"); + updatePost.currentUser(new User("system")); + a = updatePost.sqlMap().getUpdate().toTableSql(); + a += updatePost.sqlMap().getUpdate().toColumnSql(); + a += updatePost.sqlMap().getUpdate().toWhereSql(); + b = "`js_sys_post``update_by` = #{updateBy}, `update_date` = #{updateDate}, `post_name` = #{postName}" + + "`post_code` = #{postCode}"; + System.out.println("a >> "+a);System.out.println("b >> "+b);Assert.assertEquals(a, b); + + System.out.println("============ 查询测试 ============"); + a = new Post("1").sqlMap() .getWhere().and("name", QueryType.EQ, "abc").toSql(); - b = "a.`id` = #{sqlMap.where#id#EQ1} AND a.name = #{sqlMap.where.name#EQ1.val}"; + b = "a.`status` != #{STATUS_DELETE} AND a.`post_code` = #{sqlMap.where#post_code#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").sqlMap().getWhere() + a = new Post("1").sqlMap().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]} )"; + b = "a.`status` != #{STATUS_DELETE} AND a.`post_code` = #{sqlMap.where#post_code#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").sqlMap().getWhere() + a = new Post("1").sqlMap().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]} )"; + b = "a.`status` != #{STATUS_DELETE} AND a.`post_code` = #{sqlMap.where#post_code#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").sqlMap().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}"; + a = new Post("1").sqlMap().getWhere() + .and("name", QueryType.LIKE, "abc") + .and("name", QueryType.LIKE, "def").toSql(); + b = "a.`status` != #{STATUS_DELETE} AND a.`post_code` = #{sqlMap.where#post_code#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").sqlMap().getWhere() + a = new Post("1").sqlMap().getWhere() .and("name", QueryType.IN, new String[]{"abc","def"}) .and("name2", QueryType.NOT_IN, ListUtils.newArrayList("abc","def")).toSql(); - 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]} )"; + b = "a.`status` != #{STATUS_DELETE} AND a.`post_code` = #{sqlMap.where#post_code#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").sqlMap().getWhere() - .and("name", QueryType.IN, null).and("name2", QueryType.IN, new String[]{}) + a = new Post("1").sqlMap().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}"; + b = "a.`status` != #{STATUS_DELETE} AND a.`post_code` = #{sqlMap.where#post_code#EQ1}"; System.out.println("a >> "+a);System.out.println("b >> "+b);Assert.assertEquals(a, b); System.out.println("============ 带括号测试 ============"); - a = new Config("1").sqlMap().getWhere() - .andBracket("name", QueryType.EQ, "abc", 1).or("name", QueryType.EQ, "def", 2) + a = new Post("1").sqlMap().getWhere() + .andBracket("name", QueryType.EQ, "abc", 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#EQ1.val}" - + " OR a.name = #{sqlMap.where.name#EQ2.val} OR a.name = #{sqlMap.where.name#EQ3.val} )"; + b = "a.`status` != #{STATUS_DELETE} AND a.`post_code` = #{sqlMap.where#post_code#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().sqlMap().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) - .orBracket("name", QueryType.NE, "val5", 3).and("name", QueryType.EQ, "val6", 33).endBracket(3) + a = new Post().sqlMap().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) + .orBracket("name", QueryType.NE, "val5", 3) + .and("name", QueryType.EQ, "val6", 33).endBracket(3) .toSql(); - b = "( a.name = #{sqlMap.where.name#EQ1.val} AND a.name != #{sqlMap.where.name#NE11.val} )" - + " 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} )"; + b = "a.`status` != #{STATUS_DELETE}" + + " AND ( a.name = #{sqlMap.where.name#EQ1.val} AND a.name != #{sqlMap.where.name#NE11.val} )" + + " 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").sqlMap().getWhere() - .andBracket("name", QueryType.EQ, "", 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#EQ2.val} )"; + a = new Post("1").sqlMap().getWhere() + .andBracket("name", QueryType.EQ, "", 1) + .or("name", QueryType.EQ, "def", 2) + .or("name", QueryType.EQ, "", 3).endBracket().toSql(); + b = "a.`status` != #{STATUS_DELETE} AND a.`post_code` = #{sqlMap.where#post_code#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").sqlMap().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} )"; + a = new Post("1").sqlMap().getWhere() + .andBracket("name", QueryType.EQ, "abc", 1) + .or("name", QueryType.EQ, "def", 2) + .or("name", QueryType.EQ, "", 3).endBracket().toSql(); + b = "a.`status` != #{STATUS_DELETE} AND a.`post_code` = #{sqlMap.where#post_code#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").sqlMap().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} )"; + a = new Post("1").sqlMap().getWhere() + .andBracket("name", QueryType.EQ, "", 1) + .or("name", QueryType.EQ, "def", 2) + .or("name", QueryType.EQ, "ghi", 3).endBracket().toSql(); + b = "a.`status` != #{STATUS_DELETE} AND a.`post_code` = #{sqlMap.where#post_code#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").sqlMap().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} "; + a = new Post("1").sqlMap().getWhere() + .andBracket("name", QueryType.EQ, "", 1) + .or("name", QueryType.EQ, "", 2) + .or("name", QueryType.EQ, "", 3).endBracket().toSql(); + b = "a.`status` != #{STATUS_DELETE} AND a.`post_code` = #{sqlMap.where#post_code#EQ1} "; System.out.println("a >> "+a);System.out.println("b >> "+b);Assert.assertEquals(a, b); - a = new Config().sqlMap().getWhere() - .andBracket("name", QueryType.EQ, "", 1).or("name", QueryType.EQ, "", 2) - .or("name", QueryType.EQ, "", 3).endBracket().toSql(); - b = ""; + a = new Post().sqlMap().getWhere() + .andBracket("name", QueryType.EQ, "", 1) + .or("name", QueryType.EQ, "", 2) + .or("name", QueryType.EQ, "", 3).endBracket().toSql(); + b = "a.`status` != #{STATUS_DELETE} "; System.out.println("a >> "+a);System.out.println("b >> "+b);Assert.assertEquals(a, b); System.out.println("============ 实体嵌套测试 ============"); @@ -365,7 +420,7 @@ public class DaoMapperTest extends BaseSpringContextTests { System.out.println("a >> "+a);System.out.println("b >> "+b);Assert.assertEquals(a, b); System.out.println("============ 条件嵌套查询,可替代 andBracket、orBracket、endBracket v5.2.1+ ============"); - a = new Config("1").sqlMap().getWhere() + a = new Post("1").sqlMap().getWhere() .and("name", QueryType.EQ, "abc", 1) .and((w) -> w .or("name", QueryType.EQ, "def", 2) @@ -379,7 +434,7 @@ public class DaoMapperTest extends BaseSpringContextTests { .and("name", QueryType.EQ, "def", 7) .and("name", QueryType.EQ, "ghi", 8))) .toSql(); - b = "a.`id` = #{sqlMap.where#id#EQ1} AND a.name = #{sqlMap.where.name#EQ1.val}" + + b = "a.`status` != #{STATUS_DELETE} AND a.`post_code` = #{sqlMap.where#post_code#EQ1} AND a.name = #{sqlMap.where.name#EQ1.val}" + " AND (a.name = #{sqlMap.where.n#[0].name#EQ2.val} OR a.name = #{sqlMap.where.n#[0].name#EQ3.val})" + " AND ((a.name = #{sqlMap.where.n#[1].n#[0].name#EQ4.val} AND a.name = #{sqlMap.where.n#[1].n#[0].name#EQ_FORCE6.val})" + " OR (a.name = #{sqlMap.where.n#[1].n#[1].name#EQ7.val} AND a.name = #{sqlMap.where.n#[1].n#[1].name#EQ8.val}))";