mybatis輸入映射和輸出映射實(shí)例詳解
輸入映射
Mybatis支持輸入
哪些類型
簡(jiǎn)單類型、POJO,HashMap,POJO的包裝的類型。
需求:查詢用戶列表:已經(jīng)下過訂單男性用戶,那么傳入的參數(shù)包含用戶信息(User)和訂單信息(Order)
輸出映射
resultType
(1)支持的類型
基本類型、pojo、hashMap
(2)輸出是POJO和POJO列表問題
不管是輸出是單個(gè)POJO,還是POJO列表,在Mapper.xml中resultType都是一樣的,只是在Mapper接口中返回值類型不一樣。
(3)使用條件
使用resultType進(jìn)行輸出映射的時(shí)候,只要查詢出來(lái)的列名和POJO的屬性名一致,該列才可以映射成功。
只要查詢出來(lái)的列名和屬性名有一個(gè)能對(duì)應(yīng)的上,就會(huì)創(chuàng)建POJO對(duì)象。
如果查詢出來(lái)的列名和屬性名沒有一個(gè)能對(duì)應(yīng)上,就不會(huì)創(chuàng)建POJO對(duì)象。
sqlMapconfig.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> <environments default="devlelopment"> <environment id="devlelopment"> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"></property> <property name="url" value="jdbc:mysql://localhost:3306/mysql04"></property> <property name="username" value="root"></property> <property name="password" value="123"></property> </dataSource> </environment> </environments> <!--(6)在核心配置文件加載映射文件--> <mappers> <mapper resource="com/sgl/demo2/User.xml"></mapper> <mapper resource="com/sgl/demo3/mapper/UserMapper.xml"></mapper> <mapper resource="com/sgl/demo5/mapper/UserMapper.xml"></mapper> </mappers> </configuration>
UserMapper .java
package com.sgl.demo5.mapper; import com.sgl.demo5.pojo.User; import com.sgl.demo5.vo.UserQueryVo; import java.util.List; public interface UserMapper { // 根據(jù)返回類型選擇selectOne或者selectList public List<User> findUserList(UserQueryVo userQueryVo); }
UserMapper .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"> <!--namespace :命名空間,對(duì)Sql進(jìn)行分類管理,SQL分離--> <mapper namespace="com.sgl.demo5.mapper.UserMapper"> <!-- id:表示配置文件中的SQL,稱為statement 的Id parameterType:參數(shù)的類型 resultType:返回值的類型, 如果返回值是一個(gè)集合,那么類型就寫集合中元素的類型 --> <!--查詢用戶列表,主鍵查詢--> <select id="findUserList" parameterType="com.sgl.demo5.vo.UserQueryVo" resultType="com.sgl.demo5.pojo.User"> select username,id from user where username like "%"#{user.username}"%" and sex=#{user.sex} </select> </mapper>
UserQueryVo .java
package com.sgl.demo5.vo; import com.sgl.demo5.pojo.User; public class UserQueryVo { private User user; public User getUser() { return user; } public void setUser(User user) { this.user = user; } }
Test1.java
package com.sgl.demo5.test; import com.sgl.demo5.mapper.UserMapper; import com.sgl.demo5.pojo.User; import com.sgl.demo5.vo.UserQueryVo; 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 java.io.IOException; import java.io.InputStream; import java.util.List; public class Test1 { private SqlSessionFactory sqlSessionFactory; @Before public void fun0() throws IOException { InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapconfig.xml"); this.sqlSessionFactory= new SqlSessionFactoryBuilder().build(resourceAsStream); } @Test public void fun1() { SqlSession sqlSession = this.sqlSessionFactory.openSession(); UserMapper userMapper = sqlSession.getMapper( UserMapper.class ); UserQueryVo userQueryVo=new UserQueryVo(); User user=new User(); user.setUsername("小"); user.setSex("1"); userQueryVo.setUser(user); List<User> userList = userMapper.findUserList(userQueryVo); for ( User u:userList ) { System.out.println(u); } } }
以上所述是小編給大家介紹的mybatis輸入映射和輸出映射詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Java中反射動(dòng)態(tài)代理接口的詳解及實(shí)例
這篇文章主要介紹了Java中反射動(dòng)態(tài)代理接口的詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-04-04Java利用遞歸實(shí)現(xiàn)樹形結(jié)構(gòu)的工具類
有時(shí)候,我們的數(shù)據(jù)是帶有層級(jí)的,比如常見的省市區(qū)三級(jí)聯(lián)動(dòng),就是一層套著一層。而我們?cè)跀?shù)據(jù)庫(kù)存放數(shù)據(jù)的時(shí)候,往往是列表形式的,這個(gè)時(shí)候可能就需要遞歸處理為樹形結(jié)構(gòu)了。本文就為大家介紹了Java利用遞歸實(shí)現(xiàn)樹形結(jié)構(gòu)的工具類,希望對(duì)大家有所幫助2023-03-03maven+阿里云創(chuàng)建國(guó)內(nèi)鏡像的中央倉(cāng)庫(kù)(親測(cè)可用)
本篇文章主要介紹了maven+阿里云創(chuàng)建國(guó)內(nèi)鏡像的中央倉(cāng)庫(kù)(親測(cè)可用),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2017-12-12java數(shù)據(jù)結(jié)構(gòu)與算法數(shù)組模擬隊(duì)列示例詳解
這篇文章主要為大家介紹了java數(shù)據(jù)結(jié)構(gòu)與算法數(shù)組模擬隊(duì)列示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06SpringBoot中多環(huán)境yml的配置與打包問題
這篇文章主要介紹了SpringBoot中多環(huán)境yml的配置與打包問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09JavaWeb實(shí)現(xiàn)同一帳號(hào)同一時(shí)間只能一個(gè)地點(diǎn)登陸(類似QQ登錄的功能)
最近做了企業(yè)項(xiàng)目,其中有這樣的需求要求同一帳號(hào)同一時(shí)間只能一個(gè)地點(diǎn)登陸類似QQ登錄的功能。下面小編通過本文給大家分享實(shí)現(xiàn)思路,感興趣的朋友參考下吧2016-11-11SWT(JFace)體驗(yàn)之Slider,Scale
SWT(JFace)體驗(yàn)之Slider,Scale實(shí)現(xiàn)代碼。2009-06-06CountDownLatch和Atomic原子操作類源碼解析
這篇文章主要為大家介紹了CountDownLatch和Atomic原子操作類的源碼解析以及理解應(yīng)用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-03-03詳解用JWT對(duì)SpringCloud進(jìn)行認(rèn)證和鑒權(quán)
這篇文章主要介紹了詳解用JWT對(duì)SpringCloud進(jìn)行認(rèn)證和鑒權(quán),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03