解決字段名與實體類屬性名不相同的沖突
在創建實體類的時候,有時會碰到實體類與字段名不相同,這時候就會發生沖突,測試時候程序沒有報錯但是結果是空的。
例如:
數據庫
CREATE TABLE orders(
order_id INT PRIMARY KEY AUTO_INCREMENT,
order_no VARCHAR(20),
order_price FLOAT
);
java實體類
public class Orders { private int id; private String orderNo; private float price; //get,set }
這時候字段名與實體類名沖突,解決方法如下:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.zhiyou100.hhz.dao.OrderDao"> <select id="selectAll1" resultType="com.zhiyou100.hhz.bean.Orders"> select order_id,order_no,order_price from orders </select> <select id="selectAll2" resultMap="OrderMap"> select order_id,order_no,order_price from orders </select> <select id="selectAll3" resultType="com.zhiyou100.hhz.bean.Orders"> select order_id id,order_no orderNo,order_price price from orders </select> <resultMap type="com.zhiyou100.hhz.bean.Orders" id="OrderMap"> <id column="order_id" property="id"/> <result column="order_no" property="orderNo"/> <result column="order_price" property="price"/> </resultMap> </mapper>
selectAll1為錯誤演示,查詢結果為null
1. resultMap
通過resultMap標簽和屬性可以使數據庫字段名與java實體類名產生映射,
如上selectAll2(注意查詢的字段如果不是*應該寫數據庫字段名,否則會報錯)。
2. 起別名
可以在寫select查詢字段名時起個和實體類一樣的名即可,如selectAll3(比較low,也不建議使用)。