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