• Mybatis(sql列名与实体类名不同)


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

      在创建实体类的时候,有时会碰到实体类与字段名不相同,这时候就会发生冲突,测试时候程序没有报错但是结果是空的。

    例如:

      数据库

    CREATE TABLE orders(
        order_id INT PRIMARY KEY AUTO_INCREMENT,
        order_no VARCHAR(20),
        order_price FLOAT
    );

      java实体类

    public class Orders {
        private int id;
        private String orderNo;
        private float price;
      //get,set
    }

      这时候字段名与实体类名冲突,解决方法如下:

    <?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.zhiyou100.hhz.dao.OrderDao">
        <select id="selectAll1" resultType="com.zhiyou100.hhz.bean.Orders">
            select order_id,order_no,order_price from orders
        </select>
        
        
        <select id="selectAll2" resultMap="OrderMap">
            select order_id,order_no,order_price from orders
        </select>
        
        <select id="selectAll3" resultType="com.zhiyou100.hhz.bean.Orders">
            select order_id id,order_no orderNo,order_price price from orders
        </select>
        
        <resultMap type="com.zhiyou100.hhz.bean.Orders" id="OrderMap">
            <id column="order_id" property="id"/>
            <result column="order_no" property="orderNo"/>
            <result column="order_price" property="price"/>
        </resultMap>
    </mapper>

      selectAll1为错误演示,查询结果为null

      1. resultMap

      通过resultMap标签和属性可以使数据库字段名与java实体类名产生映射,

      如上selectAll2(注意查询的字段如果不是*应该写数据库字段名,否则会报错)。

       2. 起别名

      可以在写select查询字段名时起个和实体类一样的名即可,如selectAll3(比较low,也不建议使用)。

  • 相关阅读:
    python(7)-pycharm mac和windows专业版安装破解
    Navicat Premium15激活 安装与激活(转载) 有效!!
    PHP 冒泡排序
    PHP 插入排序 -- 希尔排序
    PHP 插入排序 -- 折半查找
    PHP 插入排序 -- 直接插入排序
    PHP 哈夫曼的实现
    PHP call_user_func的一些用法和注意点
    PHP 组件注册的例子
    PHP 奇葩的debug_zval_dump的输出
  • 原文地址:https://www.cnblogs.com/zfyyfw/p/11439202.html
Copyright © 2020-2023  润新知