老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

Java中SpringDataJPA的使用

 簡介:

創新互聯網絡公司擁有10多年的成都網站開發建設經驗,上千家客戶的共同信賴。提供成都網站制作、網站設計、網站開發、網站定制、賣友情鏈接、建網站、網站搭建、成都響應式網站建設、網頁設計師打造企業風格,提供周到的售前咨詢和貼心的售后服務

 Spring Data JPA 的目標是通過讓一些必須的工作變得更簡單,來顯著提高數據訪問層的實現。作為一個開發者,你寫你的倉庫界面,包括自定義查詢方法,而 Spring 給你提供自動實現。

 特性:

 對建立基于Spring 和 JPA 的庫的支持

 支持 Querydsl predicates 和安全類型的 JPA 查詢

 Transparent auditing of domain class

 Pagination 支持, 動態查詢執行, 可以集成自定義數據訪問代碼

 在 @Query 注明查詢引導時驗證

 支持基于 XML 的實體映射

 引入 @EnableJpaRepositories.,實現基于JavaConfig based 倉庫配置

1. Spring Data JPA

通常,在Java語言中,我們為項目提供數據支持時,常常用到的ORM(Object Relation Mapping)框架有:MyBatis(iBatis)或Hibernate。通常在使用時,我們需要寫大量配置文件,比如mapper文件,hibernate cfg文件等。

Spring Data Jpa集成在SpringBoot中,因為SpringBoot是一款習慣大于配置的微服務框架。所以Spring Data Jpa減少了傳統ORM框架中的大量配置,轉而使用讓數據訪問類(DAO)實現接口的方式定義數據查詢方式,當然,我們也可以利用Spring Data Jpa提供的@Query注解實現SQL自定義,但是因為Spring Data Jpa結合了Hibernate中的特性,所以自定義SQL語句時,必須使用HQL(Hibernate Query Language)語句。

2. 配置數據源

#application.yml

spring:

datasource:

driver-class-name: com.MySQL.cj.jdbc.Driver

url: jdbc:mysql://localhost:3306/db_88ys

username: huangwei

password: 123456789

3. 定義實體

在定義實體時,我們需要使用到大量Spring Data Jpa提供的注解,這些注解都來源于(javax.presistence.*)。

package com.demo.analysis.entity;

import lombok.Data;

import javax.persistence.*;

@Data //lombok注解,提供相應屬性的getter,setter

@Entity //表明該類是實體類

@Table(name = "tb_user") //說明該實體所對應的數據表表名稱,不添加則說明數據表和類名相同

public class User {

@Id //表明該屬性對應數據庫中的id主鍵

@GeneratedValue(strategy = GenerationType.IDENTITY) //指定主鍵生成策略:自增

private Integer id;

@Column(name = "username") //指定該屬性所對應數據庫中的字段名稱

private String username;

@Column(name = "password")

private String password;

public User(Integer id) {

this.id = id;

}

public User(Integer id, String username, String password) {

this.id = id;

this.username = username;

this.password = password;

}

}

4. 定義數據訪問接口

package com.demo.analysis.dao;

import com.demo.analysis.entity.User;

import org.springframework.data.jpa.repository.JpaRepository;

import org.springframework.data.jpa.repository.Query;

import org.springframework.stereotype.Repository;

// 在繼承JpaRepository時,我們需要傳入兩個泛型,第一個是所對應的實體類,第二個是實體類中主鍵的類型

@Repository

public interface IUserDao extends JpaRepository {

// 這里我們自定義查詢語句,必須使用HQL,即(Hibernate Query Language)

@Query(value = "select new User(u.id, u.username, u.password) from User u where u.username=:username")

User findUserByUserName(String username);

}

5. 數據訪問接口調用鄭州人流醫院哪家好 http://m.zzzy120.com/

在接口調用過程中,我們會常常出現Iterable類型的參數,這是我們需要將參數轉換為集合類,如List或Set。

package com.demo.analysis.controller;

import com.alibaba.fastjson.JSONArray;

import com.alibaba.fastjson.JSONObject;

import com.demo.analysis.dao.IUserDao;

import com.demo.analysis.entity.User;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.PathVariable;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;

import java.util.List;

@RestController

public class UserController {

@Autowired

private IUserDao userDao;

// 查找全部

@RequestMapping(value = "/users", method = RequestMethod.GET)

public List getAllUsers() {

return userDao.findAll();

}

// 按id批量查找

@RequestMapping(value = "/users/{ids}", method = RequestMethod.GET)

public List getUsersByIds(@PathVariable("ids") String ids) {

return userDao.findAllById(this.getIdListFromString(ids));

}

// 自定義SQL,按用戶名查詢

@RequestMapping(value = "/user/{username}", method = RequestMethod.GET)

public User getUserByUserName(@PathVariable("username") String username) {

return userDao.findUserByUserName(username);

}

// 保存單個用戶

@RequestMapping(value = "/user", method = RequestMethod.POST)

public User saveUser(User user) {

return userDao.save(user);

}

// 保存多個用戶,這里傳入的Json數據需要轉換Json數組,并最終轉換成相應實體類

@RequestMapping(value = "/users", method = RequestMethod.POST)

public List saveUsers(String users) {

JSONArray jsonArray = JSONObject.parseArray(users);

List userList = new ArrayList<>();

for (int i = 0; i < jsonArray.size(); i++) {

userList.add(jsonArray.getObject(i, User.class));

}

return userDao.saveAll(userList);

}

// 刪除單個用戶

@RequestMapping(value = "/user", method = RequestMethod.DELETE)

public void deleteUser(Integer id) {

userDao.deleteById(id);

}

// 按id刪除多個用戶

@RequestMapping(value = "/users", method = RequestMethod.DELETE)

public void deleteUsersByIds(String ids) {

List users = new ArrayList<>();

this.getIdListFromString(ids).forEach(id -> {users.add(new User(id));});

userDao.deleteInBatch(users);

}

// 將以,隔開的id轉換為List

private List getIdListFromString(String ids) {

List integers = new ArrayList<>();

for (String s : ids.split(",")) {

integers.add(Integer.valueOf(s));

}

return integers;

}

}


當前標題:Java中SpringDataJPA的使用
網頁URL:http://www.xueling.net.cn/article/iiegcj.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 精品国产精品 | 动漫av一区 | 激情综合五月 | 一区二区三区日韩精品 | 无遮挡边摸边吃奶边做视频免费 | 成人春色在线观看免费网站 | 黄色片免费在线播放 | 中文字幕日韩三级 | 免费在线观看黄色网 | 91在线日本 | 日本一区二区在线免费观看 | 国产特级毛片AAAAAA高潮流水 | 成人无码AV网站在线观看 | 人妻无码久久久久久久久久久 | 亚洲免费观看视频网站 | 综合综合综合综合综合网 | 国产欧美一区二区 | 性国产日韩欧美一区二区在线 | 日本欧美v大码在线 | 久久精品视频9 | 成人午夜免费在线视频 | 国产精品一区二三区 | 绯色aV无码一区二区人妻 | 日射精情感性色视频 | 亚洲三级在线观看 | 1769免费视频在线观看 | 一级毛片视频播放 | 在线观看av日韩 | 欧美日本亚洲视频 | 无遮挡裸体免费视频尤物 | 男人边吻奶边挵进去成人网站 | 2020国产精品| 国产免费看插插插视频 | onlyfans是个什么平台 | 91九色视频在线播放 | 日韩性视频 | 日韩高清中文字幕一区二区 | 天天撸在线视频 | 日本黄色网页 | 成人一区二区三区在线观看 | 成人一级毛片视频 |