91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mybatis 3.5.0/mybatis plus 3.x中dao層與xml參數綁定的案例分析

發布時間:2021-09-10 14:03:18 來源:億速云 閱讀:173 作者:柒染 欄目:大數據

這篇文章將為大家詳細講解有關mybatis 3.5.0/mybatis plus 3.x中dao層與xml參數綁定的案例分析,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

方式1(不推薦) 單個參數方式

@Mapper
public interface UserDao extends BaseMapper<User> {
   User selectList1(String username, String phone);
}
<select id="selectList1" resultMap="BaseResultMap">
   select * from user where username= #{arg0} and phone=#{arg1}
</select>

注意:與網上所說的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]

查看報錯報錯信息可以看出還可以這樣做

<select id="selectList1" resultMap="BaseResultMap">
   select * from user where username= #{param1} and phone=#{param2}
</select>

方式2(推薦) 實體類對象方式

該方法和之前版本是兼容的,沒有變化

@Mapper
public interface UserDao extends BaseMapper<User> {
    User selectList1(@Param("username") String username,@Param("phone") String phone);
}
<select id="selectList1" resultMap="BaseResultMap">
   select * from user where username= #{username} and phone=#{phone}
</select>

或者

 <select id="selectList1" resultMap="BaseResultMap" parameterType="com.bdkt.course.model.User">
    select * from user where username= #{username} and phone=#{phone}
 </select>

這兩種方式都可以的

方式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 Map<String, Object> objectToMap(Object obj) {
		if (obj == null) {
			return null;
		}

		Map<String, Object> map = new HashMap<String, Object>();
		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<String, Object> beanToMap(Object bean) {
		Class<?> type = bean.getClass();
		Map<String, Object> returnMap = new HashMap<String, Object>();
		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<String, ? extends Object> 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, K, v> T mapToBean(Map<K, v> map, Class<T> 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 <T, k, v> List<T> mapListToBeanList(List<Map<k, v>> listMap, Class<T> bean) {
		List<T> beanList = new ArrayList<T>(listMap.size());
		for (Map<k, v> map : listMap) {
			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();
						setter.invoke(t, value);
					}
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
			beanList.add(t);
		}

		return beanList;
	}

	/**
	 * 將實體轉換成Map
	 * 將key按駝峰規則轉換成下劃線分隔(字母大寫)
	 * @param bean
	 * @return
	 */
	public static Map<String, Object> beanToColumnMap(Object bean) {
		Class<?> type = bean.getClass();
		Map<String, Object> returnMap = new HashMap<String, Object>();
		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();
					Object result = readMethod.invoke(bean, new Object[0]);
					if (result != null && !result.equals("")) {
						returnMap.put(camelToUnderline(propertyName), result);
					}
				}
			}
		} catch (Exception e) {
			e.getMessage();
			// returnMap.put("error", e.getMessage());
			// returnMap = null;
		}
		return returnMap;
	}

	/**
	 * 將camel Map轉成Column Map
	 * 
	 * @param bean
	 * @return
	 */
	public static Map<String, Object> camelMapToColumnMap(Map<String, Object> beanMap) {
		Map<String, Object> returnMap = new HashMap<String, Object>();
		try {
			for (String key : beanMap.keySet()) {
				returnMap.put(camelToUnderline(key), beanMap.get(key));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return returnMap;
	}

	/**
	 * 字符串下劃線轉駝峰
	 * 
	 * @param line
	 * @return
	 */
	public static String underlineToCamel(String line) {
		if (line == null || "".equals(line)) {
			return "";
		}
		StringBuffer sb = new StringBuffer();
		Pattern pattern = Pattern.compile("([A-Za-z\\d]+)(_)?");
		Matcher matcher = pattern.matcher(line);
		while (matcher.find()) {
			String word = matcher.group();
			Character c = word.charAt(0);
			sb.append(matcher.start() == 0 ? Character.toLowerCase(c) : Character.toUpperCase(c));
			int index = word.lastIndexOf('_');
			if (index > 0) {
				sb.append(word.substring(1, index).toLowerCase());
			} else {
				sb.append(word.substring(1).toLowerCase());
			}
		}
		return sb.toString();
	}

	/**
	 * 字符串駝峰轉下劃線
	 * 
	 * @param line
	 * @return
	 */
	public static String camelToUnderline(String line) {
		if (line == null || "".equals(line)) {
			return "";
		}
		Character c = line.charAt(0);
		String f = line.substring(1);
		line = String.valueOf(c).toUpperCase().concat(f);
		StringBuffer sb = new StringBuffer();
		Pattern pattern = Pattern.compile("[A-Z]([a-z\\d]+)?");
		Matcher matcher = pattern.matcher(line);
		while (matcher.find()) {
			String word = matcher.group();
			sb.append(word.toUpperCase());
			sb.append(matcher.end() == line.length() ? "" : "_");
		}
		return sb.toString();
	}

}

impl代碼

 @Override
    public User selectList1(User user) {
        Map<String, Object> map = QueryEntityTools.beanToMap(user);
        return baseMapper.selectList1(map);
 }

mappper

@Mapper
public interface UserDao extends BaseMapper<User> {

    User selectList1(Map map);
}

xml

 <select id="selectList1" resultMap="BaseResultMap">
    select * from user where username= #{username} and phone=#{phone}
 </select>

或者

<select id="selectList1" resultMap="BaseResultMap" parameterType="java.util.Map">
   select * from user where username= #{username} and phone=#{phone}
</select>

關于mybatis 3.5.0/mybatis plus 3.x中dao層與xml參數綁定的案例分析就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

元江| 温宿县| 司法| 枞阳县| 崇阳县| 庆云县| 五河县| 井陉县| 县级市| 恩施市| 大厂| 南昌县| 桂平市| 澳门| 嘉义市| 明溪县| 兴文县| 丹巴县| 清水县| 阜新市| 桦南县| 梁山县| 朝阳市| 榆树市| 耿马| 安龙县| 拉孜县| 昌都县| 北海市| 普陀区| 共和县| 汝南县| 淮南市| 隆林| 徐闻县| 友谊县| 宾川县| 榆树市| 合江县| 石河子市| 韶关市|