1. 程式人生 > >Spring Boot學習筆記-零xml配置jpa

Spring Boot學習筆記-零xml配置jpa

今天配置了一下springboot 的jpa零xml配置,最終配置好了,也作為springboot和jpa的學習配置分享一下,能搜到的配置大部分都是基於xml的配置。

jpa的配置參考慕課網,主要是xml配置

springboot的學習參考

application.yml

db:
  driver: com.mysql.jdbc.Driver
  url: jdbc:mysql://127.0.0.1:3306/springbootdb
  username: root
  password: 密碼
hibernate:
  show_sql: true
  format_sql: true
  ejb.naming
_strategy: org.hibernate.cfg.ImprovedNamingStrategy dialect: org.hibernate.dialect.MySQL5InnoDBDialect hbm2ddl.auto: update packages.to.scan: com.gwc

jpa的配置主要包括以下三個地方

  1. 配置資料來源dataSource
  2. 配置EntityManagerFactory
  3. 事務管理器配置

具體配置如下(關鍵位置已經有了註釋)

package com.gwc.config;

import com.alibaba.druid.pool.DruidDataSource;
import
org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframework.core.env.Environment; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import
org.springframework.orm.hibernate5.HibernateExceptionTranslator; import org.springframework.orm.jpa.JpaTransactionManager; import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.annotation.EnableTransactionManagement; import javax.sql.DataSource; import java.util.Properties; /** * jpa的配置類,包括資料來源,事務管理等 * Created by gwcheng on 2017/4/21. */ // 標明該類使用Spring基於Java的配置 @Configuration // 讀取配置檔案的,通過Environment讀取 @PropertySource("classpath:application.yml") // scan the package of the annotated configuration class for Spring Data repositories @EnableJpaRepositories(basePackages = "com.gwc.dao") // Enables Spring's annotation-driven transaction management @EnableTransactionManagement public class JpaConfig { @Autowired private Environment env; /** * 1.配置資料來源 * * @return DataSource */ @Bean public DataSource dataSource() { DruidDataSource source = new DruidDataSource(); source.setDriverClassName(env.getRequiredProperty("db.driver")); source.setUrl(env.getRequiredProperty("db.url")); source.setUsername(env.getRequiredProperty("db.username")); source.setPassword(env.getRequiredProperty("db.password")); return source; } /** * 2.配置EntityManagerFactory * * @return */ @Bean public LocalContainerEntityManagerFactoryBean entityManagerFactory() { LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean(); // 配置資料來源 factory.setDataSource(dataSource()); // VendorAdapter factory.setJpaVendorAdapter(new HibernateJpaVendorAdapter()); // entity包掃描路徑 factory.setPackagesToScan(env.getRequiredProperty("packages.to.scan")); // jpa屬性 factory.setJpaProperties(hibernateProperties()); factory.afterPropertiesSet(); return factory; } /** * 3.事務管理器配置 * * @return */ @Bean public PlatformTransactionManager transactionManager() { JpaTransactionManager manager = new JpaTransactionManager(); manager.setEntityManagerFactory(entityManagerFactory().getObject()); return manager; } /** * 把HibernateExceptions轉換成DataAccessExceptions */ @Bean public HibernateExceptionTranslator hibernateExceptionTranslator() { return new HibernateExceptionTranslator(); } /** * hibernate配置 * @return */ private Properties hibernateProperties() { Properties properties = new Properties(); // 顯示sql語句 properties.put("hibernate.show_sql", env.getRequiredProperty("hibernate.show_sql")); // 格式化sql語句 properties.put("hibernate.format_sql", env.getRequiredProperty("hibernate.format_sql")); // 方言 properties.put("hibernate.dialect", env.getRequiredProperty("hibernate.dialect")); // 自動生成表 properties.put("hibernate.hbm2ddl.auto", env.getRequiredProperty("hibernate.hbm2ddl.auto")); // 名字策略 properties.put("hibernate.ejb.naming_strategy", env.getRequiredProperty("hibernate.ejb.naming_strategy")); return properties; } }

開發自己的dao繼承JpaRepository

package com.gwc.dao;

import com.gwc.entity.SysMenu;
import org.springframework.data.jpa.repository.JpaRepository;

/**
 * Created by gwcheng on 2017/4/21.
 */
public interface SysMenuRepository extends JpaRepository<SysMenu,Long> {

}

SysMenu是系統選單類

package com.gwc.entity;

import com.gwc.enums.MenuType;

import javax.persistence.*;
import java.util.Date;

/**
 * 系統選單
 * Created by gwcheng on 2017/4/21.
 */
@Entity
public class SysMenu {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    /*主鍵*/
    private Long id;
    /*
    名稱
     */
    @Column(length = 20)
    private String name;
    /*
    父id
     */
    private Long parentId;
    /*
    順序
     */
    @Column(name = "orders")
    private Integer order;
    /*
    型別,module(模組),page(頁面)
     */
    @Column(length = 6)
    private String type;
    /*
    連結(type為page時有url)
     */
    @Column(length = 32)
    private String url;
    /*
    圖示(type為module是會有圖示)
     */
    @Column(length = 32)
    private String icon;
    /*
    建立時間
     */
    private Date createTime;
    /*
    修改時間
     */
    private Date updateTime;

   // ... 省去getter setter方法和toString方法 
}

測試用例如下

package com.gwc;

import com.gwc.config.MainApplication;
import com.gwc.dao.SysMenuRepository;
import com.gwc.entity.SysMenu;
import com.gwc.enums.MenuType;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.Date;
import java.util.List;

@RunWith(SpringRunner.class)
@SpringBootTest(classes = MainApplication.class)
public class SysMenuRepositoryTests {

    @Autowired
    SysMenuRepository sysMenuRepository;

    @Test
    public void testPageAndSort() {

        Sort.Order order = new Sort.Order(Sort.Direction.DESC,"order");
        Sort sort = new Sort(order);
        Pageable pageable = new PageRequest(0,2,sort);
        Page<SysMenu> page = sysMenuRepository.findAll(pageable);
        for(SysMenu sysMenu:page.getContent()){
            System.out.println(sysMenu);
        }

    }
    @Test
    public void testSort(){
        Sort sort = new Sort(Sort.Direction.DESC, "order");
        List<SysMenu> sysMenuList = sysMenuRepository.findAll(sort);
        for(SysMenu sysMenu : sysMenuList) {
            System.out.println("排序欄位:"+sysMenu.getOrder());
        }
    }

    @Test
    public void testSave(){
        SysMenu sysMenu = new SysMenu();
        sysMenuRepository.save(sysMenu);

    }
    @Test
    public void testFindAll(){
        List<SysMenu> sysMenuList = sysMenuRepository.findAll();
        for(SysMenu sysMenu:sysMenuList){
            System.out.println(sysMenu);
        }
    }
    @Test
    public void testDelete(){
        sysMenuRepository.delete(1L);

    }

    @Test
    public void testFindOne(){
        SysMenu sysMenu = sysMenuRepository.findOne(1L);
        System.out.println(sysMenu);
    }


}

參考文獻

相關推薦

Spring Boot學習筆記-xml配置jpa

今天配置了一下springboot 的jpa零xml配置,最終配置好了,也作為springboot和jpa的學習配置分享一下,能搜到的配置大部分都是基於xml的配置。 jpa的配置參考慕課網,主要是xml配置 springboot的學習參考 a

spring boot 學習筆記 (7)MyBatis XML 配置

MyBatis 是現如今最流行的 ORM 框架之一,我們先來了解一下什麼是 ORM 框架。 ORM 框架 物件關係對映(Object Relational Mapping,ORM)模式是一種為了解決面向物件與關係資料庫存在的互不匹配的現象的技術。簡單的說,ORM 是通過使用描述物件和資料庫之

Spring Boot學習筆記-配置devtools實現熱部署

原理 enc cnblogs 配置文件 target res 快的 pen cache 寫在前面   Spring為開發者提供了一個名為spring-boot-devtools的模塊來使Spring Boot應用支持熱部署,提高開發者的開發效率,無需手動重啟Spring

Spring Boot 學習筆記(二)—— WEB相關配置

一、前言 上次我們快速搭建了一個Spring Boot專案,我們只需新增業務邏輯就能直接執行訪問了,說明Spring Boot已經自動為我們做完了配置工作,這次我們就來看看具體是哪些工作,如果我們想接管配置又該怎麼做。 二、WEB相關配置 檢視WebMvcAutoConfigur

Spring boot學習筆記——配置檔案

一、spring boot的配置檔案簡單介紹 1.首先搭建一個Spring boot工程 2.搭建好之後,如圖所示 spring boot的配置檔案支援兩種格式,寫法也不相同,首先先看application.properties檔案,如圖: 再看application.y

Spring boot學習筆記2--pom.xml初探究

新建的springboot_study專案的pom.xml結構如下: <parent> <groupId>org.springframework.boot</groupId> <artifactId&g

Spring Boot學習筆記(三)——使用JPA查詢資料庫返回需要的資料

1.概述 在上一篇中,我們已經學會了如何建立執行一個Spring Boot程式,但是他還遠遠滿足不了一個網站的基本需求,完成這篇的學習後我們就能實現一個簡單的雛形。 2.目標 在本篇中,實現的簡單的資料庫訪問,讀取資料的功能。 3.詳細步驟 (1)在第

Spring學習筆記03(XML配置)

Struts2+Spring+MyBatis的配置(使用註解) xml檔案一般有個約定俗稱的名字 applicationContext.xml 下面開始寫裡面的具體配置 <?xml version="1.0" encoding="UTF-8"?> <beans xm

Spring Boot 學習筆記(五) 配置Servlet容器

Tomcat配置 因為Spring Boot預設內嵌的Tomcat為servlet容器,所以這裡針對Tomcat配置作詳細介紹,其實本節的配置對Tomcat、Jetty和Undertow都是通用的。 配置Tomcat: 關於Tomcat的所有屬性都在org

Spring Boot學習筆記-Thymeleaf模板引擎的配置

寫在前面   在開發過程中,使用模板引擎是很有必要的。我之前學習SSM框架,一直是使用Freemarker作為模板引擎,現在學習了Spring Boot之後,知道Spring Boot推薦使用的模板引擎是Thymeleaf,那麼,對於我這種有點輕微強迫症的人來

spring boot 學習筆記 (9) Spring Data JPA

Spring Data JPA 是 Spring Boot 體系中約定優於配置的最佳實現,大大簡化了專案中資料庫的操作 JPA 是什麼 JPA(Java Persistence API)是 Sun 官方提出的 Java 持久化規範。它為 Java 開發人員提供了一種物件 / 關聯對映工具來管

Spring學習筆記XML配置檔案中使用properties檔案的鍵值

property檔案可以很方便的在部署執行階段改變一些特定配置屬性,比如資料庫連線等。然後在程式中根據鍵名使用property檔案中的特定屬性。在Spring中也可以在XML配置檔案中的Bean定義時通過property檔案動態進行屬性值的定義。 使用方法描述 假如入

我的第一個spring boot程序(spring boot 學習筆記之二)

獲取json 了解 訪問 static 依賴 過程 public 獲取數據 gap 第一個spring boot程序 寫在前面:鑒於spring註解以及springMVC的配置有大量細節和知識點,在學習理解之後,我們將直接進入spring boot的學習,在後續學習中用到註

Spring Boot學習筆記

end 應用程序 maven構建 筆記 項目依賴 新建 輸入 需要 文本 1.不需要任何特殊工具集成,可以使用任何IDE或文本編輯器。 2.Spring Boot CLI是一個命令行工具。 3.使用Maven構建一個基於Spring Boot 的Web應用程序。   1)打

Spring Boot 學習筆記(二)

imp family framework ima pri spa cal bin ges 新建Srping Boot 項目 以下是項目結構 由於Srping Boot內置Tomcat,所以不需要配置Tomcat就可以直接運行。 HelloWorldAppli

spring boot熱部署pom.xml配置

lease restart style 如果 mysq star pre hello art <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/X

Java框架spring Boot學習筆記(八):Spring相關概念

擴展 靜態 輕量級 想要 spring配置 核心 使用 oot 調用方法 Spring是開源、輕量級、一站式框架。 Spring核心主要兩部分 aop:面向切面編程,擴展功能不是修改源代碼實現 ioc:控制反轉,比如一個類,在類裏面有方法(不是靜態的方法),想要調用類

Java框架spring Boot學習筆記(十四):log4j介紹

inf alt 技術分享 images 使用 image 詳細 配置文件 -128 功能 日誌功能,通過log4j可以看到程序運行過程的詳細信息。 使用 導入log4j的jar包 復制log4j的配置文件,復制到src下面         3.設置日誌級別    

1、spring-boot學習筆記(一)簡單入門

ava project nal run plugin mailto 5.4 安全 class a 一、新建普通Maven工程 pom.xml <parent> <groupId>org.springframework.boot</gr