最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于spring?data?jpa?@query返回map的踩坑記錄

 更新時(shí)間:2021年11月22日 10:01:48   作者:Cumtvictor  
這篇文章主要介紹了基于spring?data?jpa?@query返回map的踩坑記錄,具有很好的參考價(jià)值,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

spring data jpa @query返回map踩坑記錄

最近用spring data jpa,網(wǎng)上看的一些教程,有的說(shuō)是返回的Object[]數(shù)組,有的說(shuō)是直接返回的對(duì)象,親身驗(yàn)證了一下,發(fā)現(xiàn)主要看寫(xiě)法和返回結(jié)果。

用的版本是這樣的:

dao代碼如下:

public interface UserRepository extends JpaRepository<User, Integer> {
 
	/**
	 * 查詢某些具體列,用Object[]數(shù)組接收
	 * @param realName
	 * @return
	 */
	@Query(value = "select u.userId,u.userName,u.realName from User u where u.realName = :realName")
	public Object[] getUserByRealName2(@Param("realName") String realName);
	
	/**
	 * 查詢整個(gè)實(shí)體對(duì)象所有信息,可以直接用實(shí)體對(duì)象接收
	 * @param realName
	 * @return
	 */
	@Query(value = "select u from User u where u.realName = :realName")
	public User getUserByRealName3(@Param("realName") String realName);
	
	/**
	 * 返回List<Map>信息
	 * @param realName
	 * @return
	 */
	@Query(value = "select new map(u as user) from User u where u.realName = :realName")
	public List<Map<String, Object>> getUserByRealName(@Param("realName") String realName);
	
	/**
	 * 返回map對(duì)象
	 * @param realName
	 * @return
	 */
	@Query(value = "select new map(u.realName as userName,o.orgName as orgName) from User u, Org o where u.realName = :realName")
	public Map<String, Object> getUserByRealName1(@Param("realName") String realName);
}

測(cè)試的代碼如下,完全沒(méi)什么問(wèn)題。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:conf/root-context.xml"})
public class UserDaoTest {	
	@Autowired
	private UserRepository userRepository; 
	@Test
	public void test() {		
		Object[] u2 = userRepository.getUserByRealName2("admin");		
		User u3 = userRepository.getUserByRealName3("admin");		
		List<Map<String, Object>> u = userRepository.getUserByRealName("test");
		String userName = ((User) u.get(0).get("user")).getRealName();
		System.out.println(userName);
		
		Map<String, Object> u1 = userRepository.getUserByRealName1("admin");
		String name = ((User) u1.get("userName")).getRealName();
		System.out.println(name);	
		assert(userName.equals("admin"));
	}
}

設(shè)置JPA的Query返回Map對(duì)象

說(shuō)明正常執(zhí)行jpa查詢的時(shí)候需要傳一個(gè)對(duì)應(yīng)實(shí)體進(jìn)行映射返回的數(shù)據(jù),這樣有時(shí)候如果一個(gè)sql是復(fù)合sql關(guān)聯(lián)很多表,就需要新建實(shí)體有點(diǎn)麻煩,通過(guò)下面方式就能將返回結(jié)果映射成map。

這樣就能隨意獲取返回結(jié)果的內(nèi)容

Query query = this.entityManager.createNativeQuery(sql);
  
  //設(shè)置JPA的Query返回Map對(duì)象
  query.unwrap(SQLQuery.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP).setParameter("createuser", userInfo.getUsercode()).setParameter("type", type); 
  List<Map<String,String>> res =  query.getResultList();

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java多線程及線程安全實(shí)現(xiàn)方法解析

    Java多線程及線程安全實(shí)現(xiàn)方法解析

    這篇文章主要介紹了Java多線程及線程安全實(shí)現(xiàn)方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • 深入了解Java中的Filter過(guò)濾器

    深入了解Java中的Filter過(guò)濾器

    Filter也稱之為過(guò)濾器,WEB開(kāi)發(fā)人員通過(guò)Filter技術(shù),對(duì)web服務(wù)器管理的所有web資源:從而實(shí)現(xiàn)一些特殊的功能。例如實(shí)現(xiàn)URL級(jí)別的權(quán)限訪問(wèn)控制、過(guò)濾敏感詞匯、壓縮響應(yīng)信息等一些高級(jí)功能。下面我們來(lái)簡(jiǎn)單學(xué)習(xí)一下吧
    2019-05-05
  • Java套接字(Socket)網(wǎng)絡(luò)編程入門(mén)

    Java套接字(Socket)網(wǎng)絡(luò)編程入門(mén)

    這篇文章主要介紹了Java套接字(Socket)網(wǎng)絡(luò)編程入門(mén),Socket可以理解為是對(duì)TCP/IP協(xié)議的抽象,需要的朋友可以參考下
    2015-10-10
  • mybatis3使用@Select等注解實(shí)現(xiàn)增刪改查操作

    mybatis3使用@Select等注解實(shí)現(xiàn)增刪改查操作

    這篇文章主要介紹了mybatis3使用@Select等注解實(shí)現(xiàn)增刪改查操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • maven依賴沖突加載順序與解決

    maven依賴沖突加載順序與解決

    這篇文章主要介紹了項(xiàng)目中同時(shí)引用了相同依賴的不同版本,也就是沖突,maven?是如何選擇的,了解了有助于解決項(xiàng)目中的依賴問(wèn)題,需要的朋友可以參考下
    2024-01-01
  • Java中的SpringAOP、代理模式、常用AspectJ注解詳解

    Java中的SpringAOP、代理模式、常用AspectJ注解詳解

    這篇文章主要介紹了Java中的SpringAOP、代理模式、常用AspectJ注解詳解,Spring提供了面向切面編程的豐富支持,允許通過(guò)分離應(yīng)用的業(yè)務(wù)邏輯與系統(tǒng)級(jí)服務(wù),例如審計(jì)和事務(wù)管理進(jìn)行內(nèi)聚性的開(kāi)發(fā),需要的朋友可以參考下
    2023-09-09
  • Springboot工具類ReflectionUtils使用教程

    Springboot工具類ReflectionUtils使用教程

    這篇文章主要介紹了Springboot內(nèi)置的工具類之ReflectionUtils的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2022-12-12
  • Java 字節(jié)數(shù)組類型(byte[])與int類型互轉(zhuǎn)方法

    Java 字節(jié)數(shù)組類型(byte[])與int類型互轉(zhuǎn)方法

    下面小編就為大家?guī)?lái)一篇Java 字節(jié)數(shù)組類型(byte[])與int類型互轉(zhuǎn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02
  • Spring?Boot實(shí)現(xiàn)消息的發(fā)送和接收使用實(shí)戰(zhàn)指南

    Spring?Boot實(shí)現(xiàn)消息的發(fā)送和接收使用實(shí)戰(zhàn)指南

    這篇文章主要為大家介紹了Spring?Boot實(shí)現(xiàn)消息的發(fā)送和接收使用實(shí)戰(zhàn)指南,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • 在Spring Boot中使用swagger-bootstrap-ui的方法

    在Spring Boot中使用swagger-bootstrap-ui的方法

    這篇文章主要介紹了在Spring Boot中使用swagger-bootstrap-ui的方法,需要的朋友可以參考下
    2018-01-01

最新評(píng)論

陕西省| 岳池县| 台安县| 和田市| 阿克苏市| 绥中县| 镇宁| 偃师市| 宿州市| 酉阳| 孟州市| 南平市| 定西市| 蓝田县| 房产| 郴州市| 高雄县| 应城市| 北流市| 晋宁县| 蒲城县| 彭水| 永登县| 泰兴市| 固阳县| 镇沅| 铁力市| 寿阳县| 育儿| 新乐市| 吉林省| 乌海市| 阳江市| 胶州市| 左云县| 蒙自县| 丽水市| 扶风县| 双峰县| 武威市| 吉安县|