sql列名
与Java实体类属性名
不同的解决方式
例如:
数据库
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">
<!-- selectAll1为错误演示,查询结果为null -->
<select id="selectAll1" resultType="com.zhiyou100.hhz.bean.Orders">
select order_id,order_no,order_price from orders
</select>
<!-- 方法1:通过resultMap标签和属性可以使数据库字段名与java实体类名产生映射 -->
<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>
<select id="selectAll2" resultMap="OrderMap">
select order_id,order_no,order_price from orders
</select>
<!-- 方法2:起别名,在写select查询字段名时起个和实体类一样的名即可,比较low... -->
<select id="selectAll3" resultType="com.zhiyou100.hhz.bean.Orders">
select order_id id,order_no orderNo,order_price price from orders
</select>
</mapper>