最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何利用反射生成?MyBatisPlus中QueryWrapper動態(tài)條件

 更新時間:2022年02月18日 16:19:16   作者:梁云亮  
這篇文章主要介紹了如何利用反射生成?MyBatisPlus中QueryWrapper動態(tài)條件,分享在MyBatisPlus中經(jīng)常會用到代碼來構(gòu)造查詢條件等內(nèi)容,需要的小伙伴可以參考一下

1.問題

在MyBatisPlus中經(jīng)常會用到如下所示的代碼來構(gòu)造查詢條件:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();

if (userQuery.getId() != null) {
? ? queryWrapper.eq("id", userQuery.getId());
}
if (userQuery.getName() != null) {
? ? queryWrapper.like("name", userQuery.getName());
}
if (userQuery.getNickname() != null) {
? ? queryWrapper.like("nickname", userQuery.getNickname());
}
if (userQuery.getAccount() != null) {
? ? queryWrapper.eq("account", userQuery.getAccount());
}
if (userQuery.getGender() != null) {
? ? queryWrapper.eq("gender", userQuery.getGender());
}
if (userQuery.getBirth1() != null) {
? ? queryWrapper.ge("birth", userQuery.getBirth1());
}
if (userQuery.getBirth2() != null) {
? ? queryWrapper.le("birth", userQuery.getBirth2());
}
if (userQuery.getTel() != null) {
? ? queryWrapper.eq("tel", userQuery.getTel());
}
if (userQuery.getEmail() != null) {
? ? queryWrapper.eq("email", userQuery.getEmail());
}
if (userQuery.getQq() != null) {
? ? queryWrapper.eq("qq", userQuery.getQq());
}
if (userQuery.getWechat() != null) {
? ? queryWrapper.eq("wechat", userQuery.getWechat());
}
if (userQuery.getHomePage() != null) {
? ? queryWrapper.eq("home_page", userQuery.getHomePage());
}
//.........
baseMapper.selectPage(page, queryWrapper);

大量這樣的代碼,可以通過如下所示的反射技術(shù)生成,從而一勞永安逸,

2.優(yōu)化方案

public class APP{

? ? public static void main(String[] args) throws Exception {
? ? ? ? QueryWrapper<Dept> queryWrapper = new QueryWrapper<>();
? ? ? ? Dept dept = Dept.builder()
? ? ? ? ? ? ? ? .deptno(1234)
// ? ? ? ? ? ? ? ?.dname("sales")
? ? ? ? ? ? ? ? .loc("NEWYORK")
? ? ? ? ? ? ? ? .build();

? ? ? ? Method[] methods = Dept.class.getDeclaredMethods();
? ? ? ? for (Method method : methods) {
? ? ? ? ? ? String methodName = method.getName();
? ? ? ? ? ? if (methodName.contains("get")) {
? ? ? ? ? ? ? ? Object res = method.invoke(dept, null);
? ? ? ? ? ? ? ? if(res != null){
? ? ? ? ? ? ? ? ? ? String columnName = getColumnName(methodName);
? ? ? ? ? ? ? ? ? ? queryWrapper.eq(columnName,res);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }

? ? ? ? System.out.println(queryWrapper);//在此處設(shè)置斷點(diǎn),可以查看保存到QueryWrapper中的值
? ? }

? ? // 根據(jù)getter方法名得到對應(yīng)表的字段名
? ? public static String getColumnName(String name) {
? ? ? ? StringBuffer sb = new StringBuffer();
? ? ? ? name = name.substring(3, name.length()); //去掉get前綴
? ? ? ? char[] chars = name.toCharArray();
? ? ? ? for (int i = 0; i < chars.length; i++) {
? ? ? ? ? ? char item = chars[i];
? ? ? ? ? ? if (item > 65 && item < 90) {//大寫字母
? ? ? ? ? ? ? ? sb.append("_");
? ? ? ? ? ? ? ? sb.append((char)(item+32));
? ? ? ? ? ? }else {
? ? ? ? ? ? ? ? sb.append(item);
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? return sb.deleteCharAt(0).toString();
? ? }
}

到此這篇關(guān)于如何利用反射生成 MyBatisPlus中QueryWrapper動態(tài)條件的文章就介紹到這了,更多相關(guān)反射生成 MyBatisPlus中QueryWrapper動態(tài)條件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

大关县| 平谷区| 崇义县| 桂东县| 化州市| 灌云县| 酉阳| 儋州市| 乌审旗| 铜梁县| 大石桥市| 稷山县| 贺州市| 黔南| 南召县| 青铜峡市| 隆回县| 大厂| 修水县| 石嘴山市| 喀喇沁旗| 浠水县| 德昌县| 外汇| 台前县| 五华县| 定边县| 新乐市| 扎赉特旗| 江都市| 武宁县| 长泰县| 梓潼县| 遵义县| 江孜县| 鹿泉市| 务川| 成安县| 同仁县| 宜宾市| 郴州市|