1. 程式人生 > >spring data jpa 執行sql

spring data jpa 執行sql

Update.class,用於建立資料庫表

import org.springframework.data.jpa.repository.*;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import javax.jms.Session;
import javax.persistence.*;
import javax.persistence.Query;
import java.util.ArrayList;
import
java.util.List; /** * Created by ly on 2016/9/23. */ public class Update { private EntityManagerFactory emf; @PersistenceUnit//使用這個標記來注入EntityManagerFactory public void setEntityManagerFactory(EntityManagerFactory emf) { this.emf = emf; } public Update() { // entityManagerFactory = Persistence.createEntityManagerFactory("entityManagerFactory");
} public void begin() { createTable(); } private void createTable() { EntityManager em = emf.createEntityManager(); em.getTransaction().begin(); //這個不加會報錯 Query query = null; for (int i = 0; i < sqlList.size(); i++) { query = em.createNativeQuery(sqlList.get(i)); query.executeUpdate(); } em.getTransaction().commit(); em.close(); } private
List<String> sqlList = new ArrayList<String>(); { sqlList.add("CREATE TABLE if not exists t_xfw_rights (\n" + " id INT not null AUTO_INCREMENT,\n" + " rightName varchar(45) DEFAULT NULL,\n" + " iconCls varchar(45) DEFAULT NULL,\n" + " orderIndex INT DEFAULT NULL,\n" + " fartherId INT DEFAULT 0,\n" + " urlPath varchar(45) DEFAULT NULL,\n" + " rightType INT DEFAULT NULL,\n" + " PRIMARY KEY (id) \n"+ ")\n"); sqlList.add("create table if not exists t_xfw_operator(\n"+ " id INT not null AUTO_INCREMENT,\n" + " userName varchar(45) default null,\n"+ " passWord varchar(45) default null,\n"+ " userType int default null,\n"+ " PRIMARY KEY (id),\n" + " UNIQUE KEY UK_username (userName)\n"+ ")\n"); sqlList.add("Create table if not exists t_xfw_operator_rights(\n" + " user_id INT(20),\n " + " right_id INT(20),\n " + " PRIMARY KEY (user_id,right_id),\n"+ " KEY FK_right_id (`right_id`),\n"+ " CONSTRAINT FK_user_id foreign key(user_id) references t_xfw_operator(id),\n"+ " CONSTRAINT FK_right_id foreign key(right_id) references t_xfw_rights(id)\n"+ ")\n"); } }

controller:

@Controller
@RequestMapping(value = "/")
public class ServerController {

    Logger logger=Logger.getLogger(ServerController.class);

    @Autowired//自動注入
    Update update;

    @RequestMapping(value = "/update")
    @ResponseBody
    public JsonResultObject update(){
        try {
            update.begin();
            return  new JsonResultObject(EnumState.Ok,"ok");
        }
        catch (Exception e){
            return new JsonResultObject(EnumState.Fail,e.getMessage());
        }

    }

}

applicationContext.xml:

    <!-- JPA實體管理工廠的配置 -->
    <bean id="entityManagerFactory"
          class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="jpaVendorAdapter" ref="hibernateJpaVendorAdapter"/>
        <property name="packagesToScan" value="com.jiapeng.xfw.server"/><!--待掃描的實體類包,不再需要persistence.xml了 -->
        <property name="jpaProperties">
            <props>
                <prop key="hibernate.ejb.naming_strategy">org.hibernate.cfg.ImprovedNamingStrategy</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.formate_sql">true</prop>
                <prop key="hibernate.hbm2ddl.auto">none</prop>
                <prop key="hibernate.ejb.naming_strategy">org.hibernate.cfg.DefaultNamingStrategy</prop>//這個設定是讓列名採用自定義的名字,免得在使用jpa進行資料庫操作時生成的sql的欄位名都是像 user_id 這樣加下劃線的名字
            </props>
        </property>
    </bean>

 <beans>
        <bean class="com.jiapeng.xfw.server.normalClass.Update">
            <property name="entityManagerFactory" ref="entityManagerFactory"></property>
        </bean>
    </beans>

相關推薦

spring data jpa 執行sql

Update.class,用於建立資料庫表 import org.springframework.data.jpa.repository.*; import org.springframework.stereotype.Repository; import o

spring data jpa執行update和delete語句時報錯處理

之前專案中使用spring data jpa時,遇到刪除記錄的需求時,主要利用spring data中自帶的delete()方法處理,最近在dao層使用delete sql語句時報錯,程式碼如下: @Query(value = "delete parcel,parcel_

spring-data-jpa動態拼接sql語句實現動態的多表條件查詢

** spring-data-jpa 動態拼接sql語句 ** spring-data-jpa對於簡單的資料操作確實使用起來比較方便,但是對於一些比較複雜的動態的多表條件查詢就不是那麼簡單了,對於需要些sql語句並且需要動態的新增條件的時候就得使用jpa的EntityManager來

maven構建spring mvc + spring data jpa+ sql server 配置

pom 配置: <properties> <spring.version>4.2.6.RELEASE</spring.version> <hibernate.version>5.2.3.Fi

spring-data-jpa Specification構建動態sql

1.持久層繼承JpaSpecificationExecutor<T> @Repository public interface DailyBillingRepository extends PagingAndSortingRepository<DailyBilling, L

spring-data-JPA使用JpaRepository註解自定義SQL查詢資料庫多表查詢

一. 首先在@Entity註解的類裡面要寫好外來鍵關係.  這個 @ManyToOne 註解可以建立外來鍵關係, 不要在自己傻傻的寫一個 private int grades_id;  寫了這個註解以後它會自動的把 Classes 這張表加上 grades_id 欄位.

spring-data-jpa原理探祕(1)-執行環境建立及載入Repository介面

spring-data-jpa的優點很多,比如繼承Repository介面,在註解中書寫JPQL語句即可訪問資料庫;支援方法名解析方式訪問資料庫;使用Predicate支援動態查詢等,在此不一一列舉了。這些都是使用spring-data-jpa中的種種優點,要想將之使用的更

Spring Data Jpa 進行原生Sql 分頁和條件查詢

因為業務的原因今天寫了一個原生的Spring Data jpa的分頁查詢 : 1 .進行封裝自己PageQuery: public class PageQuery { pub

Spring-Data-JPA 用Specification進行動態SQL查詢

1.定義一個繼承JpaSpecificationExecutor的介面 public interface UserDao extends JpaRepository<User, Integer>,JpaSpecificationExecutor<User&

Spring Data JPA 實例查詢

customer 數據庫表 查詢方式 記錄 如何 三、認識“實例查詢” 1、概念定義: 上面例子中,是這樣創建“實例”的:Example<Customer> ex = Example.of(customer, matcher);我們看到,Example對象,由custom

Spring Data Jpa緩存介紹

級別 instance osc vid group 進程 config 詳細配置 oca 一級緩存: 會話session、事務級別的,事務退出,緩存就失效了。以id為標識 實體管理器-數據源 操作數據拷貝而非數據源。 二級緩存: 線程級或集群級,以id為標識放到緩存(針

SpringBoot中使用Spring Data Jpa 實現簡單的動態查詢的兩種方法

ppr eat value table 得到 blog .net ride integer 首先謝謝大佬的簡書文章:http://www.jianshu.com/p/45ad65690e33# 這篇文章中講的是spring中使用spring data jpa,使用了xml配

spring boot + spring data jpa

分享 users pac frame 配置文件 .sql lda hash chan Spring Data Repository的核心接口是Repository(好像也沒什麽好驚訝的)。這個接口需要領域類(Domain Class)跟領域類的ID類型作為參數。這個接

Spring Boot入門第二天:一個基於Spring Boot的Web應用,使用了Spring Data JPA和Freemarker。

per pan let mysq 應用 posit ble host thead 今天打算從數據庫中取數據,並展示到視圖中。不多說,先上圖: 第一步:添加依賴。打開pom.xml文件,添加必要的依賴,完整代碼如下: <?xml version="1.0" enco

spring data jpa 關聯設計

join umt table cto ring pre any collect rate MAP關聯實體 // @ElementCollection @OneToMany(cascade = {CascadeType.ALL})// @JoinColumn

Spring Data JPA 參考指南 中文版

參考 指南 get www. book git pri 地址 blank 附下載地址:https://www.gitbook.com/book/ityouknow/spring-data-jpa-reference-documentation/detailsSpring D

spring data jpa自定義baseRepository

ram clas over 找到 ict app ray 註冊 基於 在一些特殊時候,我們會設計到對Spring Data JPA中的方法進行重新實現,這將會面臨一個問題,如果我們新創建一個實現類。如果這個實現類實現了JpaRepository接口,這樣我們不得不實現該接口

Spring Data JPA動態查詢(多條件and)

ica cat 滿足 from pos true ans let tid entity: @Entity @Table(name = "data_illustration") public class Test { @Id @Gen

spring-data-jpa+hibernate 各種緩存的配置演示

mark num rest net posit bstr doc 技術 對象 本文所有測試用代碼在https://github.com/wwlleo0730/restjplat 的分支addDB上 目前在使用spring-data-jpa和hibernate4的時候,對於

Spring Boot與Spring Data JPA

images name spa div pub oid cts cti toc 1、創建實體類bean package com.example.bean; import javax.persistence.*; @Table(name="grade") @Entity