mybatis 3.5.0/mybatis plus 3.x中dao层与xml参数绑定的案例分析
发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,这篇文章将为大家详细讲解有关mybatis 3.5.0/mybatis plus 3.x中dao层与xml参数绑定的案例分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相
千家信息网最后更新 2024年11月23日mybatis 3.5.0/mybatis plus 3.x中dao层与xml参数绑定的案例分析
这篇文章将为大家详细讲解有关mybatis 3.5.0/mybatis plus 3.x中dao层与xml参数绑定的案例分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
方式1(不推荐) 单个参数方式
@Mapperpublic interface UserDao extends BaseMapper{ User selectList1(String username, String phone);}
注意:与网上所说的select * from user where username= #{0} and phone=#{1}在新版本中是不对的,会报错误:
nested exception is org.apache.ibatis.binding.BindingException: Parameter '0' not found. Available parameters are [arg1, arg0, param1, param2]
查看报错报错信息可以看出还可以这样做
方式2(推荐) 实体类对象方式
该方法和之前版本是兼容的,没有变化
@Mapperpublic interface UserDao extends BaseMapper{ User selectList1(@Param("username") String username,@Param("phone") String phone);}
或者
这两种方式都可以的
方式3 使用bean工具类转成map,map类型参数(推荐)
bean工具类
import com.alibaba.fastjson.JSONObject;import java.beans.BeanInfo;import java.beans.Introspector;import java.beans.PropertyDescriptor;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.regex.Matcher;import java.util.regex.Pattern;public class QueryEntityTools { public static MapobjectToMap(Object obj) { if (obj == null) { return null; } Map map = new HashMap (); try { Field[] declaredFields = obj.getClass().getDeclaredFields(); for (Field field : declaredFields) { field.setAccessible(true); map.put(field.getName(), field.get(obj)); } } catch (Exception e) { } return map; } /** * 将实体转换成Map * * @param bean * @return */ public static Map beanToMap(Object bean) { Class> type = bean.getClass(); Map returnMap = new HashMap (); try { BeanInfo beanInfo = Introspector.getBeanInfo(type); PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); for (int i = 0; i < propertyDescriptors.length; i++) { PropertyDescriptor descriptor = propertyDescriptors[i]; String propertyName = descriptor.getName(); if (!propertyName.equals("class")) { Method readMethod = descriptor.getReadMethod(); if (readMethod != null) { Object result = readMethod.invoke(bean, new Object[0]); if (result != null) { returnMap.put(propertyName, result); } else { returnMap.put(propertyName, ""); } } } } } catch (Exception e) { returnMap.put("error", e.getMessage()); } return returnMap; } /** * 将实体转换成Json * * @param bean * @return */ public static JSONObject beanToJson(Object bean) { Class> type = bean.getClass(); JSONObject json = new JSONObject(); try { BeanInfo beanInfo = Introspector.getBeanInfo(type); PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); for (int i = 0; i < propertyDescriptors.length; i++) { PropertyDescriptor descriptor = propertyDescriptors[i]; String propertyName = descriptor.getName(); if (!propertyName.equals("class")) { Method readMethod = descriptor.getReadMethod(); if (readMethod != null) { Object result = readMethod.invoke(bean, new Object[0]); if (result != null) { json.put(propertyName, result); } else { json.put(propertyName, ""); } } } } } catch (Exception e) { json.put("error", e.getMessage()); } return json; } /** * 将map转换成Json */ public static JSONObject mapToJson(Map map) { JSONObject json = new JSONObject(); for (String key : map.keySet()) { json.put(key, map.get(key)); } return json; } /** * 将map转换成实体 * * @param map * @param bean * @return */ public static T mapToBean(Map map, Class bean) { T t = null; try { BeanInfo beanInfo = Introspector.getBeanInfo(bean); PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); t = bean.newInstance(); for (PropertyDescriptor property : propertyDescriptors) { String key = property.getName(); if (map.containsKey(key)) { Object value = map.get(key); Method setter = property.getWriteMethod(); if (checkType(value, property.getPropertyType())) { setter.invoke(t, value); } } } } catch (Exception e) { e.printStackTrace(); } return t; } private static boolean checkType(Object a, Class> b) { Class extends Object> oc = a.getClass(); if (oc == b || oc.getSuperclass() == b || checkInterfaces(oc.getInterfaces(), b)) { return true; } else { return false; } } private static boolean checkInterfaces(Class>[] cArray, Class> b) { boolean tag = false; for (Class> c : cArray) { if (c == b) { tag = true; break; } } return tag; } /** * Map List To Bean List * @param bean * @return */ public static List mapListToBeanList(List
impl代码
@Override public User selectList1(User user) { Mapmap = QueryEntityTools.beanToMap(user); return baseMapper.selectList1(map); }
mappper
@Mapperpublic interface UserDao extends BaseMapper{ User selectList1(Map map);}
xml
或者
关于mybatis 3.5.0/mybatis plus 3.x中dao层与xml参数绑定的案例分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
方式
实体
参数
下划线
驼峰
推荐
案例
案例分析
分析
内容
字符
字符串
工具
文章
更多
知识
篇文章
不对
不错
代码
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发方法--原型方法
网络安全防护问题研究
对服务器的安全威胁有
上海豪庭网络技术有限公司
衢州软件开发需要学什么
桌面软件开发要求
少年三国志 数据库连接
默认服务器无法修复
肇庆网络安全有哪些
网络安全授权定义
小学网络安全维护制度
眼镜行业软件开发哪家好
软件开发需求调研过程
网络安全 结论
网络安全公益广告音频
我的世界冰影服务器
tbc奥金斧服务器人很少
网络安全交往篇PPT
福州康杰网络技术有限公司
不备案的服务器怎么防护
类似六元空间的数据库
更新数据库表中的数据
腾讯云服务器怎么上传程序
新晨科技有没有网络安全概念
软件开发技术总监简介
无线传感网络技术课后答案
软件开发需求调研过程
联想ts240服务器能装显卡吗
小学网络技术
小鸟云5周年服务器能买吗