亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringBoot集成JPA持久層框架簡化數據庫的示例分析

發布時間:2021-06-21 10:46:54 來源:億速云 閱讀:145 作者:小新 欄目:開發技術

這篇文章主要介紹SpringBoot集成JPA持久層框架簡化數據庫的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

    與SpringBoot2.0整合 

    1、核心依賴

    <!-- JPA框架 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

    2、配置文件

    spring:
      application:
        name: node09-boot-jpa
      datasource:
        url: jdbc:mysql://localhost:3306/data_jpa?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
        username: root
        password: root
        driver-class-name: com.mysql.jdbc.Driver
      jpa:
        hibernate:
          ddl-auto: update
        show-sql: true

    ddl-auto幾種配置說明
    1)create
    每次加載hibernate時都刪除上一次的生成的表,然后根據bean類重新來生成新表,容易導致數據丟失,(建議首次創建時使用)。
    2)create-drop
    每次加載hibernate時根據bean類生成表,但是sessionFactory一關閉,表就自動刪除。
    3)update
    第一次加載hibernate時根據bean類會自動建立起表的結構,以后加載hibernate時根據bean類自動更新表結構,即使表結構改變了但表中的行仍然存在不會刪除以前的行。
    4)validate
    每次加載hibernate時,驗證創建數據庫表結構,只會和數據庫中的表進行比較,不會創建新表,但是會插入新值。

    3、實體類對象

    就是根據這個對象生成的表結構。

    @Table(name = "t_user")
    @Entity
    public class User {
        @Id
        @GeneratedValue
        private Integer id;
        @Column
        private String name;
        @Column
        private Integer age;
        // 省略 GET SET
    }

    4、JPA框架的用法

    定義對象的操作的接口,繼承JpaRepository核心接口。

    import com.boot.jpa.entity.User;
    import org.springframework.data.jpa.repository.JpaRepository;
    import org.springframework.data.jpa.repository.Query;
    import org.springframework.data.repository.query.Param;
    import org.springframework.stereotype.Repository;
    @Repository
    public interface UserRepository extends JpaRepository<User,Integer> {
    
        // 但條件查詢
        User findByAge(Integer age);
        // 多條件查詢
        User findByNameAndAge(String name, Integer age);
        // 自定義查詢
        @Query("from User u where u.name=:name")
        User findSql(@Param("name") String name);
    }

    5、封裝一個服務層邏輯

    import com.boot.jpa.entity.User;
    import com.boot.jpa.repository.UserRepository;
    import org.springframework.stereotype.Service;
    import javax.annotation.Resource;
    @Service
    public class UserService {
        @Resource
        private UserRepository userRepository ;
        // 保存
        public void addUser (User user){
            userRepository.save(user) ;
        }
        // 根據年齡查詢
        public User findByAge (Integer age){
            return userRepository.findByAge(age) ;
        }
        // 多條件查詢
        public User findByNameAndAge (String name, Integer age){
            return userRepository.findByNameAndAge(name,age) ;
        }
        // 自定義SQL查詢
        public User findSql (String name){
            return userRepository.findSql(name) ;
        }
        // 根據ID修改
        public void update (User user){
            userRepository.save(user) ;
        }
        //根據id刪除一條數據
        public void deleteStudentById(Integer id){
            userRepository.deleteById(id);
        }
    }

    測試代碼塊 

    import com.boot.jpa.JpaApplication;
    import com.boot.jpa.entity.User;
    import com.boot.jpa.service.UserService;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    import javax.annotation.Resource;
    @RunWith(SpringJUnit4ClassRunner.class)
    @SpringBootTest(classes = JpaApplication.class)
    public class UserJpaTest {
        @Resource
        private UserService userService ;
        @Test
        public void addUser (){
            User user = new User() ;
            user.setName("知了一笑");
            user.setAge(22);
            userService.addUser(user);
            User user1 = new User() ;
            user1.setName("cicada");
            user1.setAge(23);
            userService.addUser(user1);
        }
        @Test
        public void findByAge (){
            Integer age = 22 ;
            // User{id=3, name='知了一笑', age=22}
            System.out.println(userService.findByAge(age));
        }
        @Test
        public void findByNameAndAge (){
            System.out.println(userService.findByNameAndAge("cicada",23));
        }
        @Test
        public void findSql (){
            // User{id=4, name='cicada', age=23}
            System.out.println(userService.findSql("cicada"));
        }
        @Test
        public void update (){
            User user = new User() ;
            // 如果這個主鍵不存在,會以主鍵自增的方式新增入庫
            user.setId(3);
            user.setName("哈哈一笑");
            user.setAge(25);
            userService.update(user) ;
        }
        @Test
        public void deleteStudentById (){
            userService.deleteStudentById(5) ;
        }
    }

    以上是“SpringBoot集成JPA持久層框架簡化數據庫的示例分析”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    浠水县| 广水市| 平舆县| 巴南区| 乐都县| 呈贡县| 莒南县| 根河市| 清镇市| 聊城市| 建湖县| 永善县| 芜湖县| 株洲县| 澄江县| 萨嘎县| 威宁| 仙居县| 灵山县| 吴旗县| 乌拉特后旗| 宜宾县| 尖扎县| 饶平县| 韶关市| 安仁县| 丰县| 新巴尔虎右旗| 桑植县| 淮北市| 澄城县| 沙雅县| 平度市| 西乌珠穆沁旗| 邳州市| 新巴尔虎左旗| 榆林市| 北安市| 托里县| 嘉定区| 崇左市|