mybatis字段名与类属性名不相同的冲突

新建一个表

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

然后建一个javaBean

public class Order {
private int id;
private String orderNo;
private float price;
}

建立映射文件

<select id="getOrder" parameterType="int" resultType="Order">
        select * from orders where order_id=#{id}
</select>

这个时候由于javaBean里面的id和数据库里面的order_id不对应,执行后返回的是以数据库里面取得名字的字段值,这时候bean里面没有这些字段名所以赋值失败。

这时候有两种解决方法:



方式一:通过在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>

方式二:定义一个映射

<select id="getOrder2" parameterType="int" resultMap="getOrder2Map">
        select * from orders where order_id=#{id}
</select>

<resultMap type="Order" id="getOrder2Map">
        <id property="id" column="order_id"/>
        <result property="orderNo" column="order_no"/>
        <result property="price" column="order_price"/>
</resultMap>

  

时间: 2024-11-12 19:58:59

mybatis字段名与类属性名不相同的冲突的相关文章

在数据库字段(实体类属性名)带下划线时get和set方法无效

错误描述: 使用springboot和mybatis,查询数据并封装到java类中,因为java实体类的属性名带有下划线(" _ "),导致get和set方法无效,数据无法封装到实体类中,出现null. 结局办法: 数据库字段保持不变的情况下,改变属性名命名方式,用@Column("")注解将属性名和字段对应. 原文地址:https://www.cnblogs.com/FanWenSong/p/12103320.html

MyBatis学习总结_04_解决字段名与实体类属性名不相同的冲突

一.准备演示需要使用的表和数据 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); INSER

MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突

在平时的开发中,我们表中的字段名和表对应实体类的属性名称不一定都是完全相同的,下面来演示一下这种情况下的如何解决字段名与实体类属性名不相同的冲突. 一.准备演示需要使用的表和数据 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'

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

原文:http://www.cnblogs.com/xdp-gacl/p/4264425.html 在平时的开发中,我们表中的字段名和表对应实体类的属性名称不一定都是完全相同的,下面来演示一下这种情况下的如何解决字段名与实体类属性名不相同的冲突. 一.准备演示需要使用的表和数据 CREATE TABLE orders( order_id INT PRIMARY KEY AUTO_INCREMENT, order_no VARCHAR(20), order_price FLOAT ); INSER

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

在平时的开发中,我们表中的字段名和表对应实体类的属性名称不一定都是完全相同的,下面来演示一下这种情况下的如何解决字段名与实体类属性名不相同的冲突. 一.准备演示需要使用的表和数据 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'

MyBatis学习总结4--解决字段名与实体类属性名不相同的冲突

在平时的开发中,我们表中的字段名和表对应实体类的属性名称不一定是完全相同的,如果直接在xml映射文件中使用sql进行映射,会造成返回值为空的情况,下面阐述解决方案: 测试所用表和数据 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

Mybatis学习二(字段名与实体类属性名不相同/关联查询)

1.在写项目的时候会遇到数据库字段名与实体类属性名不同的情况,可能是为了方便也可能是其他要求,whatever,我们现在来解决这个问题 准备一个数据库表如下 1 CREATE TABLE orders( 2 order_id INT PRIMARY KEY AUTO_INCREMENT, 3 order_no VARCHAR(20), 4 order_price FLOAT 5 ); 接下类定义一个实体类 1 public class Order { 2 private int id; 3 pr

尚硅谷-mybatis-解决字段名与实体类属性名不相同的冲突

项目结构: 准备表和数据: 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

KO ------- 表中字段名和实体类属性名不一致

-----------------------siwuxie095 KO ------- 表中字段名和实体类属性名不一致 如果数据库表中的字段名和实体类的属性名不一致,那么在查询时, 相应字段的结果就会为空 (一)问题复现 1.先创建数据库 mybatis_db, 再创建表 t_user,并插入若干数据 注意:user_id 为主键,且为自动增长 2.创建实体类 User.java: package com.siwuxie095.entity; // 实体类 public class User