mybatis字段名与类属性名不相同的冲突
新建一个表
CREATE TABLE orders( order_id INT PRIMARY KEY AUTO_INCREMENT, order_no VARCHAR(20), order_price FLOAT ); INSERT INTO orders(order_no, order_price) VALUES('aaaa', 23); INSERT INTO orders(order_no, order_price) VALUES('bbbb', 33); INSERT INTO orders(order_no, order_price) VALUES('cccc', 22);
然后建一个javaBean
public class Order { private int id; private String orderNo; private float price; }
建立映射文件
<select id="getOrder" parameterType="int" resultType="Order"> select * from orders where order_id=#{id} </select>
这个时候由于javaBean里面的id和数据库里面的order_id不对应,执行后返回的是以数据库里面取得名字的字段值,这时候bean里面没有这些字段名所以赋值失败。
这时候有两种解决方法:
方式一:通过在sql语句中定义别名
<select id="selectOrder" parameterType="int" resultType="_Order"> select order_id id, order_no orderNo,order_price price from orders where order_id=#{id} </select>
方式二:定义一个映射
<select id="getOrder2" parameterType="int" resultMap="getOrder2Map"> select * from orders where order_id=#{id} </select> <resultMap type="Order" id="getOrder2Map"> <id property="id" column="order_id"/> <result property="orderNo" column="order_no"/> <result property="price" column="order_price"/> </resultMap>