MyBatis入门03 解决字段名与实体类属性名不相同的冲突

来源:互联网 发布:php sleep 函数执行 编辑:程序博客网 时间:2024/05/05 07:41

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);    }}
0 0