目錄結構
實際練習
- 建立數據庫表
//建立orders表並插入三條數據
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('aaa',23
INSERT INTO orders(order_no,order_price)VALUES('bbb',33);
INSERT INTO orders(order_no,order_price)VALUES('ccc',22);
- 建實體類
public class Order {
private int id;
private String orderNo;
private float price;
public int getId() {return id;}
public void setId(int id) {this.id = id;}
public String getOrderNo() { return orderNo;}
public void setOrderNo(String orderNo) {this.orderNo = orderNo;}
public float getPrice() {return price;}
public void setPrice(float price) {this.price = price; }
}
- 測試類
public class Test4 {
@Test
public void test4(){
SqlSessionFactory factory = MybatisUtils.getFactory();
SqlSession session =factory.openSession();//打開一個連接
//第一種方式在sql語句上修改對應字段
String statement="com.atguigu.day03_mybatis.test4.oderMapper.getOrder";
//第二種方式,用resultMap封裝一些對應關係
statement="com.atguigu.day03_mybatis.test4.oderMapper.getOrder2";
//返回order對象
Order order = session.selectOne(statement,2);
System.out.println(order.getId());
System.out.println(order.getOrderNo());
System.out.println(order.getPrice());
session.close();
}
}
- orderMapper.xml文件
<selectid="getOrder" parameterType="int" resultType="Order">
select * from orders where order_id=#{id}
</select>
//如果按照之前的方式寫sql語句
<select id="getOrder2" parameterType="int" resultMap="getOrder2Map">
select * from orders where order_id=#{id}
</select>
原因:我們正常些sql語句 select * from 表中的字段與實體建立的字段不對應
//方式一:
<selectid="getOrder"parameterType="int"resultType="com.atguigu.day03_mybatis.bean.Order">
select order_id id, order_no orderNo, order_price price from orders where order_id=#{id}
</select>
//方式二:
//注意resultMap要與下面resultMap的id一致
<select id="getOrder2" parameterType="int" resultMap="getOrder2Map">
select * from orders where order_id=#{id}
</select>
<resultMap type="com.atguigu.day03_mybatis.bean.Order" id="getOrder2Map">
<id property="id" column="order_id"/>
<result property="price" column="order_price"/>
<result property="orderNo" column="order_no"/>
</resultMap>
- 在配置文件conf.xml配置orderMapper的mapper文件
<mapper resource="com/atguigu/day03_mybatis/test4/orderMapper.xml"/>
- 結果
問題總結
解決: