- 一、对于对象,每次直接生成的wrapper,其具有对象属性,可根据对象属性的改变,动态的改变sql:
@Test
public void testWrapper() {
Banner banner = new Banner();
banner.setBannerTitle("test");
System.out.println( " 99999999====== " + iBannerService.list(Wrappers.lambdaQuery(banner)));
banner.setBannerTitle("123");
System.out.println( " 99999999====== " + iBannerService.list(Wrappers.lambdaQuery(banner)));
banner.setBannerTitle("3455");
System.out.println( " 99999999====== " + iBannerService.list(Wrappers.lambdaQuery(banner)));
}
控制台输出结果:
08:42:02.427 [main] DEBUG c.i.p.b.m.B.selectList - [debug,143] - ==> Preparing: SELECT id,banner_status,deleted,modify_time,banner_title,create_time,library_id,is_all,banner_sort,banner_img,banner_content FROM banner WHERE banner_title=?
08:42:02.428 [main] DEBUG c.i.p.b.m.B.selectList - [debug,143] - ==> Parameters: test(String)
08:42:02.481 [main] DEBUG c.i.p.b.m.B.selectList - [debug,143] - <== Total: 0
99999999====== []
08:42:23.676 [main] DEBUG c.i.p.b.m.B.selectList - [debug,143] - ==> Preparing: SELECT id,banner_status,deleted,modify_time,banner_title,create_time,library_id,is_all,banner_sort,banner_img,banner_content FROM banner WHERE banner_title=?
08:42:23.677 [main] DEBUG c.i.p.b.m.B.selectList - [debug,143] - ==> Parameters: 123(String)
08:42:23.737 [main] DEBUG c.i.p.b.m.B.selectList - [debug,143] - <== Total: 2
99999999====== [Banner(id=477462504827613184, bannerTitle=123, libraryId=477119163770302464, bannerSort=5, bannerContent={"children":[{"name":"Text","data":"111","color":"#333333","fontSize":"14","bold":false,"align":"0","id":935247},{"name":"Image","url":"https://studycloud-test.oss-cn-hangzhou.aliyuncs.com/x2joc04zekm1638939923598.jpg","text":"","imgScreenSize":"1","id":902981}],"version":"0.0.1"}, bannerImg=https://studycloud-test.oss-cn-hangzhou.aliyuncs.com/tf37lm7b781638939900233.jpg, bannerStatus=1, isAll=0, modifyTime=Wed Dec 08 13:05:32 CST 2021, createTime=Wed Dec 08 13:05:32 CST 2021, deleted=0), Banner(id=479660013675048960, bannerTitle=123, libraryId=477119163770302464, bannerSort=4, bannerContent={"children":[{"name":"Text","data":"111","color":"#333333","fontSize":"14","bold":false,"align":"0","id":293717}],"version":"0.0.1"}, bannerImg=https://studycloud-test.oss-cn-hangzhou.aliyuncs.com/h26n1vrzllw1639463854807.png, bannerStatus=1, isAll=1, modifyTime=Tue Dec 14 14:37:39 CST 2021, createTime=Tue Dec 14 14:37:39 CST 2021, deleted=0)]
08:42:25.520 [main] DEBUG c.i.p.b.m.B.selectList - [debug,143] - ==> Preparing: SELECT id,banner_status,deleted,modify_time,banner_title,create_time,library_id,is_all,banner_sort,banner_img,banner_content FROM banner WHERE banner_title=?
08:42:25.521 [main] DEBUG c.i.p.b.m.B.selectList - [debug,143] - ==> Parameters: 3455(String)
08:42:25.573 [main] DEBUG c.i.p.b.m.B.selectList - [debug,143] - <== Total: 0
99999999====== []
- 二、对于对象,只一次生成wrapper对象,执行sql时,也可以动态生成sql语句:
@Test
public void testWrapper() {
Banner banner = new Banner();
LambdaQueryWrapper<Banner> wrapper1 = Wrappers.lambdaQuery(banner);
banner.setBannerTitle("test");
System.out.println( " 99999999====== " + iBannerService.list(wrapper1));
banner.setBannerTitle("123");
System.out.println( " 99999999====== " + iBannerService.list(wrapper1));
}
控制台输出:
09:05:28.292 [main] DEBUG c.i.p.b.m.B.selectList - [debug,143] - ==> Preparing: SELECT id,banner_status,deleted,modify_time,banner_title,create_time,library_id,is_all,banner_sort,banner_img,banner_content FROM banner WHERE banner_title=?
09:05:28.293 [main] DEBUG c.i.p.b.m.B.selectList - [debug,143] - ==> Parameters: test(String)
09:05:28.337 [main] DEBUG c.i.p.b.m.B.selectList - [debug,143] - <== Total: 0
99999999====== []
09:05:28.338 [main] DEBUG c.i.p.b.m.B.selectList - [debug,143] - ==> Preparing: SELECT id,banner_status,deleted,modify_time,banner_title,create_time,library_id,is_all,banner_sort,banner_img,banner_content FROM banner WHERE banner_title=?
09:05:28.339 [main] DEBUG c.i.p.b.m.B.selectList - [debug,143] - ==> Parameters: 123(String)
09:05:28.391 [main] DEBUG c.i.p.b.m.B.selectList - [debug,143] - <== Total: 2
99999999====== [Banner(id=477462504827613184, bannerTitle=123, libraryId=477119163770302464, bannerSort=5, bannerContent={"children":[{"name":"Text","data":"111","color":"#333333","fontSize":"14","bold":false,"align":"0","id":935247},{"name":"Image","url":"https://studycloud-test.oss-cn-hangzhou.aliyuncs.com/x2joc04zekm1638939923598.jpg","text":"","imgScreenSize":"1","id":902981}],"version":"0.0.1"}, bannerImg=https://studycloud-test.oss-cn-hangzhou.aliyuncs.com/tf37lm7b781638939900233.jpg, bannerStatus=1, isAll=0, modifyTime=Wed Dec 08 13:05:32 CST 2021, createTime=Wed Dec 08 13:05:32 CST 2021, deleted=0), Banner(id=479660013675048960, bannerTitle=123, libraryId=477119163770302464, bannerSort=4, bannerContent={"children":[{"name":"Text","data":"111","color":"#333333","fontSize":"14","bold":false,"align":"0","id":293717}],"version":"0.0.1"}, bannerImg=https://studycloud-test.oss-cn-hangzhou.aliyuncs.com/h26n1vrzllw1639463854807.png, bannerStatus=1, isAll=1, modifyTime=Tue Dec 14 14:37:39 CST 2021, createTime=Tue Dec 14 14:37:39 CST 2021, deleted=0)]
三、对于字符串等类型生成的wrapper,该wrapper对象只在第一次就构造完成,后续该字符串再改变,sql并不随之改变。
@Test
public void testWrapper() {
String s = "test";
LambdaQueryWrapper<Banner> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Banner::getBannerTitle, s);
iBannerService.list(wrapper);
s = "123";
iBannerService.list(wrapper);
}
控制台:
09:05:28.405 [main] DEBUG c.i.p.b.m.B.selectList - [debug,143] - ==> Preparing: SELECT id,banner_status,deleted,modify_time,banner_title,create_time,library_id,is_all,banner_sort,banner_img,banner_content FROM banner WHERE (banner_title = ?)
09:05:28.406 [main] DEBUG c.i.p.b.m.B.selectList - [debug,143] - ==> Parameters: test(String)
09:05:28.452 [main] DEBUG c.i.p.b.m.B.selectList - [debug,143] - <== Total: 0
09:05:28.455 [main] DEBUG c.i.p.b.m.B.selectList - [debug,143] - ==> Preparing: SELECT id,banner_status,deleted,modify_time,banner_title,create_time,library_id,is_all,banner_sort,banner_img,banner_content FROM banner WHERE (banner_title = ?)
09:05:28.456 [main] DEBUG c.i.p.b.m.B.selectList - [debug,143] - ==> Parameters: test(String)
09:05:28.517 [main] DEBUG c.i.p.b.m.B.selectList - [debug,143] - <== Total: 0
其实看了这三个例子就很容易想到对象的指向性,对于字符串或者一些基本数据类型,在构造wrapper时就已经创建了sql编译前的等式,见源码:
而wrapper包裹对象,则是将对象进行指向,所以对象内的字段改变,sql语句也会相应变化: