麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發(fā) > 綜合 > 正文

mybatis高級查詢-一對一查詢

2024-07-21 02:52:31
字體:
供稿:網(wǎng)友

查詢結果: 這里寫圖片描述 項目結構: 這里寫圖片描述 全局配置文件中掃描包: 這里寫圖片描述

一對一查詢

需求: 根據(jù)用戶的訂單,查詢出訂單信息和該訂單關聯(lián)的用戶信息(eg:用戶名和地址) 一對一查詢有兩種實現(xiàn): 建議:一般情況建議采用方式一,因為比較簡單,不需要自己定義resultMap,如果出現(xiàn)查詢出的列名與java中的pojo類中的屬性名不對應,可以采用在查詢語句中用別名的方式來解決.

方式一: 采用resultType方式二:采用resultMap

用到的pojo類:

OrdersModel.java類package cn.com.yves.model;import java.util.Date;public class OrdersModel {//省篇幅,省略get,set方法 PRivate Integer id; private Integer userId; private String number; private Date createtime; private String note; }OrdersViewBean.java:package cn.com.yves.logic.model;import cn.com.yves.model.OrdersModel;/** * 一對一查詢:(方式一) * * 需求: 根據(jù)用戶的訂單,查詢出訂單信息和該訂單關聯(lián)的用戶信息(eg:用戶名和地址) * * 設計原則:用mapper.xml中 用resultType接收時,在選pojobean的時候,盡可能的繼承包含結果多的Bean 這里 * 繼承的是OrdersModel的pojo * * @author Yves He * */public class OrdersViewBean extends OrdersModel { // 定義還需要的字段( 用戶名和地址),為了節(jié)省篇幅,省略了get,set方法 private String userName; private String userAddress;}

ViewVoMapper.java內(nèi)容: 不過是方式一還是方式二的mapper.java接口方法定義不變.

package cn.com.yves.logic.mapper;import java.util.List;import cn.com.yves.logic.model.OrdersViewBean;//高級查詢public interface ViewVoMapper { // 一對一查詢:(mapper.xml中有兩種寫法 : resultType和resultMap) // 需求: 根據(jù)用戶的訂單,查詢出訂單信息和該訂單關聯(lián)的用戶信息(eg:用戶名和地址) List<OrdersViewBean> selectOdersAndUserInfo(int orderId);}

ViewVoMapper.xml內(nèi)容:

<?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="cn.com.yves.logic.mapper.ViewVoMapper"> <resultMap type="cn.com.yves.logic.model.OrdersViewBean" id="OrdersViewBeanResultMap"> <id column="id" property="id" /> <result column="user_id" property="userId" /> <result column="number" property="number" /> <result column="createtime" property="createtime" /> <result column="note" property="note" /> <!-- 注意: 如果在查詢語句中沒有指定列的別名,這里的列名要和pojo類中的屬性名對應 --> <result column="username" property="userName" /> <result column="address" property="userAddress" /> </resultMap> <!-- 一對一查詢: 方法一:用resultType --> <!-- 按需求定義查詢: userName和userAddress采用別名來映射到OrdersViewBean的字段中 --> <select id="selectOdersAndUserInfo" resultType="cn.com.yves.logic.model.OrdersViewBean" parameterType="int"> SELECT orders.*,`user`.username userName,`user`.address userAddress FROM orders,`user` WHERE orders.id = `user`.id and orders.id = #{value} </select> <!-- 一對一查詢: 方法二:用resultMap --> <!-- <select id="selectOdersAndUserInfo" resultMap="OrdersViewBeanResultMap" --> <!-- parameterType="int"> --> <!-- SELECT orders.*,`user`.username,`user`.address FROM --> <!-- orders,`user` WHERE --> <!-- orders.id = `user`.id and orders.id = #{value} --> <!-- </select> --></mapper>

測試類ViewVoMapperTest.java:

package cn.com.yves.mapper;import java.io.InputStream;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import org.junit.Before;import org.junit.Test;import cn.com.yves.logic.mapper.ViewVoMapper;public class ViewVoMapperTest { private SqlSessionFactory sqlSessionFactory; @Before public void setUp() throws Exception { String mybatisConfigPath = "SqlMapConfig.xml"; InputStream inputStream = Resources .getResourceAsStream(mybatisConfigPath); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } @Test public void testSelectOdersAndUserInfo() { SqlSession session = sqlSessionFactory.openSession(); ViewVoMapper mapper = session.getMapper(ViewVoMapper.class); mapper.selectOdersAndUserInfo(4); }}

心得:

一般情況建議采用方式一,因為比較簡單,不需要自己定義resultMap,如果出現(xiàn)查詢出的列名與java中的pojo類中的屬性名不對應,可以采用在查詢語句中用別名的方式來解決.在用到resultMap的時候,盡量在里面定義成引用的成員而不是基本的數(shù)據(jù)類型,這樣才可以最好的發(fā)揮resultMap的作用.設計數(shù)據(jù)的時候,可以將列名設置成user_id的格式,在自動生成pojo類的屬性的時候,會將java類的字段名生成userId.
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产交换3p国产精品 | 久久国产精品久久久久久电车 | 久久99精品国产99久久6男男 | 国内精品国产三级国产a久久 | 成人免费一区二区 | 国产精品久久久麻豆 | 羞羞视频2023 | 91九色蝌蚪在线 | 成人av一二三区 | 免费放黄网站在线播放 | 国产毛片aaa一区二区三区视频 | 免费高清一级欧美片在线观看 | 国产精品1区| aa国产视频一区二区 | 精品中文字幕视频 | 在线观看国产日韩 | 国产精品成人亚洲一区二区 | www深夜成人 | 夜夜夜精品视频 | 精品一区二区久久久久 | 狠狠干最新网址 | 成人一级视频在线观看 | 国产亚洲精品久久久久久久久久 | 成人在线免费观看视频 | 国产做爰 | 成人精品aaaa网站 | 欧美在线观看视频一区二区 | 校花被肉干高h潮不断 | 91久久国产露脸精品国产护士 | 国产午夜精品久久久久久免费视 | 欧美福利视频一区二区三区 | 成人一级毛片 | 国产一级爱c视频 | 国产精品成年片在线观看, 激情小说另类 | 中国a毛片 | 欧美国产成人在线 | 国产午夜亚洲精品午夜鲁丝片 | 国产成人精品免费视频大全最热 | 国产黄色网页 | 久久精品欧美电影 | 久久小视频 |