1、準備表和數據:
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);
2、定義實體類:
public class Order {
private int id;
private String orderNo;
private float price;
}
3、實現getOrderById(id)的查詢:
方式一: 通過在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>
方式二: 通過<resultMap>
<select id="selectOrderResultMap" parameterType="int" resultMap="orderResultMap">
select * from orders where order_id=#{id}
</select>
<resultMap type="_Order" id="orderResultMap">
<id property="id" column="order_id"/>
<result property="orderNo" column="order_no"/>
<result property="price" column="order_price"/>
</resultMap>
4、定義映射文件
<?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.atguigu.day03_mybaits.test4.orderMapper">
<!--
根據id查詢orders表得到一個order對象
-->
<select id="getOrder" 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 : 封裝一些映射關係
id : 專門針對主鍵
result : 針對一般字段
-->
<resultMap type="Order" id="getOrder2Map">
<id property="id" column="order_id"/>
<result property="orderNo" column="order_no"/>
<result property="price" column="order_price"/>
</resultMap>
</mapper>
5、編寫測試代碼:
package com.atguigu.day03_mybaits.test4;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import com.atguigu.day03_mybaits.bean.Order;
import com.atguigu.day03_mybaits.util.MybatisUtils;
/*
* 測試: 解決字段名與實體類屬性名不相同的衝突
*/
public class Test4 {
public static void main(String[] args) {
SqlSessionFactory factory = MybatisUtils.getFactory();
SqlSession session = factory.openSession();
String statement = "com.atguigu.day03_mybaits.test4.orderMapper.getOrder";
statement = "com.atguigu.day03_mybaits.test4.orderMapper.getOrder2";
Order order = session.selectOne(statement , 2);
System.out.println(order);
}
}