目录结构
实际练习
- 建立数据库表
//建立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"/>
- 结果
问题总结
解决: