优化 SqlMap 性能,增加 update 和 insert 生成参数接口,方便在 Mapper 中直接引用。

This commit is contained in:
thinkgem
2025-04-01 11:57:35 +08:00
parent 9bc8d5dd55
commit c0637ebf0d
2 changed files with 164 additions and 89 deletions

View File

@@ -25,4 +25,24 @@
ORDER BY ${sqlMap.order.toSql()} ORDER BY ${sqlMap.order.toSql()}
</select> </select>
<!-- 重写 Dao 中的 insert 查询方法 v5.11.1
<insert id="insert">
INSERT INTO ${sqlMap.insert.toTableSql()}
(${sqlMap.insert.toColumnSql()})
VALUES (${sqlMap.insert.toValuesSql()})
</insert> -->
<!-- 重写 Dao 中的 update 查询方法 v5.11.1
<update id="update">
UPDATE ${sqlMap.update.toTableSql()}
SET ${sqlMap.update.toColumnSql()}
WHERE ${sqlMap.update.toWhereSql()}
</update> -->
<!-- 重写 Dao 中的 phyDelete 查询方法 v5.11.1
<delete id="phyDelete">
DELETE FROM ${sqlMap.update.toTableSql()}
WHERE ${sqlMap.update.toWhereSql()}
</delete> -->
</mapper> </mapper>

View File

@@ -33,7 +33,7 @@ import java.util.List;
public class DaoMapperTest extends BaseSpringContextTests { public class DaoMapperTest extends BaseSpringContextTests {
@Autowired @Autowired
private ConfigDao configDao; private PostDao postDao;
@Autowired @Autowired
private UserDao userDao; private UserDao userDao;
@Autowired @Autowired
@@ -41,8 +41,6 @@ public class DaoMapperTest extends BaseSpringContextTests {
@Autowired @Autowired
private CompanyDao companyDao; private CompanyDao companyDao;
@Autowired @Autowired
private DictDataDao dictDataDao;
@Autowired
private FileUploadDao fileUploadDao; private FileUploadDao fileUploadDao;
@Autowired @Autowired
private EmpUserDao empUserDao; private EmpUserDao empUserDao;
@@ -52,32 +50,41 @@ public class DaoMapperTest extends BaseSpringContextTests {
try{ try{
System.out.println("============ 插入测试 ============"); System.out.println("============ 插入测试 ============");
Config config = new Config(); Post post1 = new Post();
config.setId("1"); post1.setId("1");
config.setConfigKey("test"); post1.setPostName("test");
config.setConfigName("test"); post1.setPostType("1");
config.setConfigValue("1"); post1.setPostSort(1);
config.setIsSys("1"); long postInsertNum = postDao.insert(post1);
long configInsertNum = configDao.insert(config); Assert.assertEquals("postDao.insert", postInsertNum , 1);
Assert.assertEquals("configDao.insert", configInsertNum , 1); Post postInsertRes = postDao.get(post1);
Config configInsertRes = configDao.get(config); Assert.assertEquals("postDao.insert result", postInsertRes.getId() , "1");
Assert.assertEquals("configDao.insert result", configInsertRes.getId() , "1");
System.out.println("============ 批量插入测试 ============"); System.out.println("============ 批量插入测试 ============");
Config config2 = (Config)config.clone(); Post post2 = (Post)post1.clone();
config2.setId("2"); post2.setId("2");
config2.setConfigKey("test2"); post2.setPostName("test2");
Config config3 = (Config)config.clone(); Post post3 = (Post)post1.clone();
config3.setId("3"); post3.setId("3");
config3.setConfigKey("test3"); post3.setPostName("test3");
long configinsertBatchNum = configDao.insertBatch(ListUtils.newArrayList(config2, config3)); long postInsertBatchNum = postDao.insertBatch(ListUtils.newArrayList(post2, post3));
Assert.assertEquals("configDao.insertBatch", configinsertBatchNum , 2); Assert.assertEquals("postDao.insertBatch", postInsertBatchNum , 2);
Config configInsertBatchRes2 = configDao.get(config2); Post postInsertBatchRes2 = postDao.get(post2);
Assert.assertEquals("configDao.insertBatch result", configInsertBatchRes2.getId() , "2"); Assert.assertEquals("postDao.insertBatch result", postInsertBatchRes2.getId() , "2");
Config configInsertBatchRes3 = configDao.get(config3); Post postInsertBatchRes3 = postDao.get(post3);
Assert.assertEquals("configDao.insertBatch result", configInsertBatchRes3.getId() , "3"); Assert.assertEquals("postDao.insertBatch result", postInsertBatchRes3.getId() , "3");
System.out.println("============ 按主键更新测试 ============"); 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 area = new Area();
area.setAreaCode("1"); area.setAreaCode("1");
area.setAreaName("你好"); area.setAreaName("你好");
@@ -105,7 +112,7 @@ public class DaoMapperTest extends BaseSpringContextTests {
Area areaUpdateRes = areaDao.get(area); Area areaUpdateRes = areaDao.get(area);
Assert.assertEquals("areaDao.update result", areaUpdateRes.getAreaName() , "你好2"); Assert.assertEquals("areaDao.update result", areaUpdateRes.getAreaName() , "你好2");
System.out.println("============ 按主键批量更新测试 ============"); System.out.println("============ 按树表批量更新测试 ============");
long areaUpdateBatchNum = areaDao.updateBatch(ListUtils.newArrayList(area2, area3)); long areaUpdateBatchNum = areaDao.updateBatch(ListUtils.newArrayList(area2, area3));
Assert.assertEquals("areaDao.update", areaUpdateBatchNum , 2); Assert.assertEquals("areaDao.update", areaUpdateBatchNum , 2);
@@ -120,9 +127,9 @@ public class DaoMapperTest extends BaseSpringContextTests {
System.out.println("============ 更新数据状态测试 ============"); System.out.println("============ 更新数据状态测试 ============");
long areaStatusNum = areaDao.updateStatus(area); long areaStatusNum = areaDao.updateStatus(area);
Assert.assertEquals("areaDao.updateStatus", areaUpdateByEntityNum , 1); Assert.assertEquals("areaDao.updateStatus", areaStatusNum , 1);
long areaStatusByEntityNum = areaDao.updateStatusByEntity(area, where); long areaStatusByEntityNum = areaDao.updateStatusByEntity(area, where);
Assert.assertEquals("areaDao.updateStatusByEntity", areaUpdateByEntityNum , 1); Assert.assertEquals("areaDao.updateStatusByEntity", areaStatusByEntityNum , 1);
System.out.println("============ 逻辑删除测试 ============"); System.out.println("============ 逻辑删除测试 ============");
long areaDeleteNum = areaDao.delete(area); long areaDeleteNum = areaDao.delete(area);
@@ -209,13 +216,16 @@ public class DaoMapperTest extends BaseSpringContextTests {
Assert.assertEquals("fileUploadDao.findList attrName this", fileUploadList.size(), 0); Assert.assertEquals("fileUploadDao.findList attrName this", fileUploadList.size(), 0);
System.out.println("============ 树结构基本查询测试 ============"); System.out.println("============ 树结构基本查询测试 ============");
DictData dictData = new DictData(); Area area6 = new Area();
dictData.setParentCodes("0,"); area6.setParentCodes("0,370000,%");
List<DictData> dictDataList = dictDataDao.findByParentCodesLike(dictData); List<Area> area6List = areaDao.findByParentCodesLike(area6);
Assert.assertTrue("dictDataDao.findByParentCodesLike", dictDataList.size() > 0); System.out.println(area6List);
List<DictData> dictDataList2 = dictDataDao.findList(dictData); Assert.assertTrue("areaDao.findByParentCodesLike", !area6List.isEmpty());
System.out.println(dictDataList2); Area area7 = new Area();
Assert.assertTrue("dictDataDao.findList", dictDataList2.size() > 0); area7.setParentCodes_rightLike("0,370000,");
List<Area> area7List2 = areaDao.findList(area7);
System.out.println(area7List2);
Assert.assertTrue("areaDao.findByParentCodesRightLike", area6List.size() == area7List2.size());
System.out.println("============ 分页情况下foreach测试 ============"); System.out.println("============ 分页情况下foreach测试 ============");
EmpUser empUser = new EmpUser(); EmpUser empUser = new EmpUser();
@@ -223,7 +233,11 @@ public class DaoMapperTest extends BaseSpringContextTests {
empUser.setPage(new Page<>(1, 3)); empUser.setPage(new Page<>(1, 3));
List<EmpUser> empUserList = empUserDao.findUserListByOfficeCodes(empUser); List<EmpUser> empUserList = empUserDao.findUserListByOfficeCodes(empUser);
System.out.println(empUserList); 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){ }catch(Exception e){
e.printStackTrace(); e.printStackTrace();
@@ -233,94 +247,135 @@ public class DaoMapperTest extends BaseSpringContextTests {
public static void main(String[] args) { public static void main(String[] args) {
String a = null, b = null; String a = null, b = null;
System.out.println("============ 基本测试 ============"); System.out.println("============ 插入测试 ============");
a = new Config("1").sqlMap() 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(); .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); 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(); .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]}," b = "a.`status` != #{STATUS_DELETE} AND a.`post_code` = #{sqlMap.where#post_code#EQ1}" +
+ " #{sqlMap.where.name#IN1.val[1]}, #{sqlMap.where.name#IN1.val[2]} )"; " 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); 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(); .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]}," b = "a.`status` != #{STATUS_DELETE} AND a.`post_code` = #{sqlMap.where#post_code#EQ1}" +
+ " #{sqlMap.where.name#IN1.val[1]}, #{sqlMap.where.name#IN1.val[2]} )"; " 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 >> "+a);System.out.println("b >> "+b);Assert.assertEquals(a, b);
System.out.println("============ 重复赋值测试 ============"); System.out.println("============ 重复赋值测试 ============");
a = new Config("1").sqlMap().getWhere() a = new Post("1").sqlMap().getWhere()
.and("name", QueryType.LIKE, "abc").and("name", QueryType.LIKE, "def").toSql(); .and("name", QueryType.LIKE, "abc")
b = "a.`id` = #{sqlMap.where#id#EQ1} AND a.name LIKE #{sqlMap.where.name#LIKE1.val}"; .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("a >> "+a);System.out.println("b >> "+b);Assert.assertEquals(a, b);
System.out.println("============ IN、NOT IN 测试 ============"); 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("name", QueryType.IN, new String[]{"abc","def"})
.and("name2", QueryType.NOT_IN, ListUtils.newArrayList("abc","def")).toSql(); .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]} )" b = "a.`status` != #{STATUS_DELETE} AND a.`post_code` = #{sqlMap.where#post_code#EQ1}" +
+ " AND a.name2 NOT IN ( #{sqlMap.where.name2#NOT_IN1.val[0]}, #{sqlMap.where.name2#NOT_IN1.val[1]} )"; " 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); 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, null).and("name2", QueryType.IN, new String[]{}) .and("name", QueryType.IN, null)
.and("name2", QueryType.IN, new String[]{})
.and("name3", QueryType.NOT_IN, ListUtils.newArrayList()).toSql(); .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 >> "+a);System.out.println("b >> "+b);Assert.assertEquals(a, b);
System.out.println("============ 带括号测试 ============"); System.out.println("============ 带括号测试 ============");
a = new Config("1").sqlMap().getWhere() a = new Post("1").sqlMap().getWhere()
.andBracket("name", QueryType.EQ, "abc", 1).or("name", QueryType.EQ, "def", 2) .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}" b = "a.`status` != #{STATUS_DELETE} AND a.`post_code` = #{sqlMap.where#post_code#EQ1}" +
+ " OR a.name = #{sqlMap.where.name#EQ2.val} OR a.name = #{sqlMap.where.name#EQ3.val} )"; " 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); System.out.println("a >> "+a);System.out.println("b >> "+b);Assert.assertEquals(a, b);
a = new Config().sqlMap().getWhere() a = new Post().sqlMap().getWhere()
.andBracket("name", QueryType.EQ, "val1", 1).and("name", QueryType.NE, "val2", 11).endBracket(1) .andBracket("name", QueryType.EQ, "val1", 1)
.orBracket("name", QueryType.NE, "val3", 2).and("name", QueryType.NE, "val4", 22).endBracket(2) .and("name", QueryType.NE, "val2", 11).endBracket(1)
.orBracket("name", QueryType.NE, "val5", 3).and("name", QueryType.EQ, "val6", 33).endBracket(3) .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(); .toSql();
b = "( a.name = #{sqlMap.where.name#EQ1.val} AND a.name != #{sqlMap.where.name#NE11.val} )" b = "a.`status` != #{STATUS_DELETE}" +
+ " OR ( a.name != #{sqlMap.where.name#NE2.val} AND a.name != #{sqlMap.where.name#NE22.val} )" " AND ( a.name = #{sqlMap.where.name#EQ1.val} AND a.name != #{sqlMap.where.name#NE11.val} )" +
+ " OR ( a.name != #{sqlMap.where.name#NE3.val} AND a.name = #{sqlMap.where.name#EQ33.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 >> "+a);System.out.println("b >> "+b);Assert.assertEquals(a, b);
System.out.println("============ 带括号部分空值测试 ============"); System.out.println("============ 带括号部分空值测试 ============");
a = new Config("1").sqlMap().getWhere() a = new Post("1").sqlMap().getWhere()
.andBracket("name", QueryType.EQ, "", 1).or("name", QueryType.EQ, "def", 2) .andBracket("name", QueryType.EQ, "", 1)
.or("name", QueryType.EQ, "", 3).endBracket().toSql(); .or("name", QueryType.EQ, "def", 2)
b = "a.`id` = #{sqlMap.where#id#EQ1} AND ( a.name = #{sqlMap.where.name#EQ2.val} )"; .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); 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()
.andBracket("name", QueryType.EQ, "abc", 1).or("name", QueryType.EQ, "def", 2) .andBracket("name", QueryType.EQ, "abc", 1)
.or("name", QueryType.EQ, "", 3).endBracket().toSql(); .or("name", QueryType.EQ, "def", 2)
b = "a.`id` = #{sqlMap.where#id#EQ1} AND ( a.name = #{sqlMap.where.name#EQ1.val}" .or("name", QueryType.EQ, "", 3).endBracket().toSql();
+ " OR a.name = #{sqlMap.where.name#EQ2.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} )";
System.out.println("a >> "+a);System.out.println("b >> "+b);Assert.assertEquals(a, b); 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()
.andBracket("name", QueryType.EQ, "", 1).or("name", QueryType.EQ, "def", 2) .andBracket("name", QueryType.EQ, "", 1)
.or("name", QueryType.EQ, "ghi", 3).endBracket().toSql(); .or("name", QueryType.EQ, "def", 2)
b = "a.`id` = #{sqlMap.where#id#EQ1} AND ( a.name = #{sqlMap.where.name#EQ2.val}" .or("name", QueryType.EQ, "ghi", 3).endBracket().toSql();
+ " 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#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 >> "+a);System.out.println("b >> "+b);Assert.assertEquals(a, b);
System.out.println("============ 带括号全部空值测试 ============"); System.out.println("============ 带括号全部空值测试 ============");
a = new Config("1").sqlMap().getWhere() a = new Post("1").sqlMap().getWhere()
.andBracket("name", QueryType.EQ, "", 1).or("name", QueryType.EQ, "", 2) .andBracket("name", QueryType.EQ, "", 1)
.or("name", QueryType.EQ, "", 3).endBracket().toSql(); .or("name", QueryType.EQ, "", 2)
b = "a.`id` = #{sqlMap.where#id#EQ1} "; .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); System.out.println("a >> "+a);System.out.println("b >> "+b);Assert.assertEquals(a, b);
a = new Config().sqlMap().getWhere() a = new Post().sqlMap().getWhere()
.andBracket("name", QueryType.EQ, "", 1).or("name", QueryType.EQ, "", 2) .andBracket("name", QueryType.EQ, "", 1)
.or("name", QueryType.EQ, "", 3).endBracket().toSql(); .or("name", QueryType.EQ, "", 2)
b = ""; .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("a >> "+a);System.out.println("b >> "+b);Assert.assertEquals(a, b);
System.out.println("============ 实体嵌套测试 ============"); 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("a >> "+a);System.out.println("b >> "+b);Assert.assertEquals(a, b);
System.out.println("============ 条件嵌套查询,可替代 andBracket、orBracket、endBracket v5.2.1+ ============"); 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("name", QueryType.EQ, "abc", 1)
.and((w) -> w .and((w) -> w
.or("name", QueryType.EQ, "def", 2) .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, "def", 7)
.and("name", QueryType.EQ, "ghi", 8))) .and("name", QueryType.EQ, "ghi", 8)))
.toSql(); .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#[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})" + " 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}))"; " OR (a.name = #{sqlMap.where.n#[1].n#[1].name#EQ7.val} AND a.name = #{sqlMap.where.n#[1].n#[1].name#EQ8.val}))";