首页 > 其他分享 >【Mybatis学习总结三】Mybatis种解决字段名与实体类属性名不相同的冲突

【Mybatis学习总结三】Mybatis种解决字段名与实体类属性名不相同的冲突

时间:2022-11-22 12:32:47浏览次数:71  
标签:实体类 price order public Mybatis orderNo Order id 字段名


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

     在开发中,先创建一个数据表,数据表中包含字段名如(order_id,order_no)..而在创建实体类的时候,对象的属性名可能为(id,no)...

这样在Mybatis测试代码中要想根据某个id获取信息时:select * from orders where order_id=#{id}...会因为数据库中字段名和实体类属性名不相同而冲突,从而得不到想要的结果。下面看下如何解决这个冲突:

一、创建数据表和数据

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


二、定义实体类:Order.java

【注】此实体类要在conf.xml定义别名:


<typeAliases>
<package name="com.mybatis.entities"/>
</typeAliases>

创建包com.mybatis.entities,创建实体类:Order.java



package com.mybatis.entities;

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 Order(int id, String orderNo, float price) {
super();
this.id = id;
this.orderNo = orderNo;
this.price = price;
}
public Order() {
super();
}
@Override
public String toString() {
return "Order [id=" + id + ", orderNo=" + orderNo + ", price=" + price
+ "]";
}


}

三、定义映射文件,在映射文件中解决冲突:orderMapper.xml

<?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">
<!--
解决字段名和实体类属性名不相同的冲突
-->
<!--定义操作 users 表的sql 映射文件:orderMapper.xml -->
<mapper namespace="com.mybatis.test3.orderMapper">
<!-- 方式一:通过在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>






</mapper>

有两种方式,第一种通过定义别名的方法;

第二种通过<resultMap>标签的方式:

resultMap:封装一些具有映射关系的对;

id:

result:      针对一般属性


四、conf.xml中注册


<mappers>   
<mapper resource="com/mybatis/test3/orderMapper.xml"/>
</mappers>


五、测试类:


package com.mybatis.test3;

import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import com.mybatis.entities.Order;
import com.mybatis.test2.MybatisUtils;

public class Test3 {

@Test
public void testGetOrder() {
SqlSession session =MybatisUtils.getSqlSessionFactory().openSession();
//String statement="com.mybatis.test3.orderMapper.selectOrder";
String statement="com.mybatis.test3.orderMapper.selectOrderResultMap";
Order order = session.selectOne(statement, 2);
System.out.println(order);//Order [id=2, orderNo=bbbb, price=33.0]
}

}


结构:

【Mybatis学习总结三】Mybatis种解决字段名与实体类属性名不相同的冲突_字段名



标签:实体类,price,order,public,Mybatis,orderNo,Order,id,字段名
From: https://blog.51cto.com/u_15886477/5877691

相关文章

  • 【Mybatis学习总结二】Mybatis操作数据表的CRUD实现
    本节内容学习了如何通过Mybatis实现对数据库的增删改查操作。一共有两种实现方式,一是基于XML的实现;第二种是基于注解的实现。下面来具体介绍两种方法的具体实现:一、基于XML......
  • Java:Spring Boot整合mybatis-plus示例
    文档https://start.spring.io/mybatis-plus文档|githubmaven文档p6spy文档|github使用示例(目录)项目结构$tree-Itarget.├──pom.xml└──src......
  • Mybatis
    Mybatis官网地址:https://mybatis.net.cn/1、简介1.1、什么是MybatisMyBatis是一款优秀的持久层框架它支持自定义SQL、存储过程以及高级映射。MyBatis免除......
  • java mybatis查询数据库获取树形结构数据
    数据库数据,每条数据都有code和parent_code,最顶级的parent_code为1实体类importcom.baomidou.mybatisplus.annotation.FieldFill;importcom.baomidou.mybatispl......
  • mybatis学习第⼋部分:Mybatis插件
    8.1插件简介⼀般情况下,开源框架都会提供插件或其他形式的拓展点,供开发者⾃⾏拓展。这样的好处是显⽽易⻅的,⼀是增加了框架的灵活性。⼆是开发者可以结合实际需求,对框架......
  • Java开发学习(四十二)----MyBatisPlus查询语句之条件查询
    一、条件查询的类MyBatisPlus将书写复杂的SQL查询条件进行了封装,使用编程的形式完成查询条件的组合。这个我们在前面都有见过,比如查询所有和分页查询的时候,都有看到......
  • mybatis查询结果封装javabean属性时属性名与数据库字段不同都能封装????
    问题现象:通过mybatis查询数据库中的表记录,封装成javaBean,本来属性名和字段名不相同的情况下,属性最后应该注入null的,结果能够正常注入。javaBean:publicclassEmplo......
  • Mybatis下的SQL注入漏洞原理及防护方法
    目录一、前言二、SQL注入漏洞原理1、概述2、漏洞复现3、修复建议三、Mybatis框架简介1、参数符号的两种方式2、漏洞复现四、Mybatis框架下的SQL注入问题及防护方法1、......
  • mybatis-plus入门
    1、快速开始1.1、现有一张User表,其表结构如下idnameageemali1Jone18test1@baomidou.com2Jack20test2@baomidou.com3Tom28test3@baomidou.co......
  • 使用mybatis-plus代码生成器生成代码框架
    使用mybatis-plus代码生成器生成代码框架一.首先引入依赖<!--连接MySQL--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring......