解决字段名与实体类属性名不相同的冲突
在创建实体类的时候,有时会碰到实体类与字段名不相同,这时候就会发生冲突,测试时候程序没有报错但是结果是空的。
例如:
数据库
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,也不建议使用)。