尚矽谷-mybatis-解決欄位名與實體類屬性名稱不相同的衝突,矽谷-mybatis-

來源:互聯網
上載者:User

尚矽谷-mybatis-解決欄位名與實體類屬性名稱不相同的衝突,矽谷-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);

Order實體類代碼:

package com.atguigu.mybatis.bean;public class Order {private int id;private String orderNo;private float price;public Order(int id, String orderNo, float price) {super();this.id = id;this.orderNo = orderNo;this.price = price;}public Order() {super();}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;}@Overridepublic 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"><mapper namespace="com.atguigu.mybatis.bean.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>

擷取SqlSessionFactory工廠的MybatisUtils代碼:

package com.atguigu.mybatis.utils;import java.io.InputStream;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;public class MybatisUtils {public static SqlSessionFactory getFactory() {String resource = "conf.xml";InputStream inputStream = MybatisUtils.class.getClassLoader().getResourceAsStream(resource);SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);return factory;}}

設定檔conf.xml代碼:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><properties resource="db.properties"/><!-- 為實體類定義別名,簡化sql映射xml檔案中的引用--><typeAliases><!-- 該包下的所有類以其簡單類名為實體類別名(如:User類的別名為User) --><package name="com.atguigu.mybatis.bean"/></typeAliases><!-- development : 開發模式work : 工作模式 --><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="${driver}" /><property name="url" value="${url}" /><property name="username" value="${name}" /><property name="password" value="${password}" /></dataSource></environment></environments><mappers><mapper resource="com/atguigu/mybatis/bean/orderMapper.xml"/></mappers></configuration>

測試類別Test3代碼:

package com.atguigu.mybatis.test3;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import com.atguigu.mybatis.bean.Order;import com.atguigu.mybatis.utils.MybatisUtils;/* * 測試: 解決欄位名與實體類屬性名稱不相同的衝突 */public class Test3 {public static void main(String[] args) {SqlSessionFactory factory=MybatisUtils.getFactory();SqlSession session=factory.openSession();String statement="com.atguigu.mybatis.bean.orderMapper.getOrder";statement="com.atguigu.mybatis.bean.orderMapper.getOrder2";Order order =session.selectOne(statement, 3);System.out.println(order);session.close();}}

資料庫配置代碼db.properties:

driver=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/mybatisname=rootpassword=123456

記錄學習mybatis的筆記,也希望對大家有所協助,共同學習,共同討論,共同進步!

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.