04_解决字段名与实体类属性名不相同的冲突

1 准备表和数据

 
   
  1. CREATE TABLE orders(
  2. order_id INT PRIMARY KEY AUTO_INCREMENT,
  3. order_no VARCHAR(20),
  4. order_price FLOAT
  5. );
  6. INSERT INTO orders(order_no, order_price) VALUES('aaaa', 23);
  7. INSERT INTO orders(order_no, order_price) VALUES('bbbb', 33);
  8. INSERT INTO orders(order_no, order_price) VALUES('cccc', 22);

2 定义实体类:表的字段和实体的属性不一致

 
   
  1. public class Order {
  2. private int id;
  3. private String orderNo;
  4. private float price;
  5. }

3 解决方法

3.1 通过查询的别名

 
   
  1. <!-- 通过查询字段的别名来对应 -->
  2. <select id="getOrder" parameterType="int" resultType="Order">
  3. SELECT order_id id, order_no orderNo, order_price price FROM orders WHERE order_id=#{id}
  4. </select>
测试
 
    
  1. @Test
  2. public void test1(){
  3. SqlSessionFactory factory = MybatisUtils.getFactory();
  4. SqlSession session = factory.openSession();
  5. String statement = "cn.imentors.mybatis.test4.orderMapper.getOrder";
  6. Order order = session.selectOne(statement , 2);
  7. System.out.println(order);
  8. }
3.2 通过resultMap
 
   
  1. <resultMap type="Order" id="getOrder2Map">
  2. <id property="id" column="order_id"/>
  3. <result property="orderNo" column="order_no"/>
  4. <result property="price" column="order_price"/>
  5. </resultMap>
  6. <select id="getOrder2" parameterType="int" resultMap="getOrder2Map">
  7. SELECT * FROM orders WHERE order_id=#{id}
  8. </select>
  • resultMap : 封装一些映射关系
  •  id : 专门针对主键
  • result : 针对一般字段
测试
 
   
  1. @Test
  2. public void test2(){
  3. SqlSessionFactory factory = MybatisUtils.getFactory();
  4. SqlSession session = factory.openSession();
  5. String statement = "cn.imentors.mybatis.test4.orderMapper.getOrder2";
  6. Order order = session.selectOne(statement , 2);
  7. System.out.println(order);
  8. }

捐赠我们
    良师益友工作室一直在致力于帮助编程爱好更加快速方便地学习编程,如果您对我们的成果表示认同并且觉得对你有所帮助,欢迎您对我们捐赠^_^。
    

转载于:https://www.cnblogs.com/imentors/p/4809485.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值