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")@ResponseBodypublic 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相关推荐
- Spring Data JPA 写SQL语句也可以如此简单
在使用 Spring Data JPA 的时候,通常我们只需要继承 JpaRepository 就能获得大部分常用的增删改查的方法.有时候我们需要自定义一些查询方法,可以写自定义 HQL 语句 像这样 ...
- Spring Data JPA使用必备(三):Spring Data JPA自定义SQL写法
Spring Data JPA的前两篇已经写了通过方法名格式自动生成SQL,也简单的提到了@Query注解.但是往往真正的业务逻辑里面,这些是完全不够用的,涉及到一些稍微复杂一点的查询就会有点问题,如 ...
- springboot jpa sql打印_SpringBoot集成Spring Data JPA以及读写分离
相关代码:github OSCchina JPA是什么 JPA(Java Persistence API)是Sun官方提出的Java持久化规范,它为Java开发人员提供了一种对象/关联映射工具 来管理 ...
- Spring Data JPA使用必备(二):Spring Data JPA方法命名规则实现SQL自动生成
Spring data JPA是一个好东西,但是对于很多习惯于写SQL,直接怼数据库的人来说,这个真的用不习惯,还被一致认为是一个不易于程序员发展的技术.因为JPA提供了标准的封装,在操作数据库的时候 ...
- Spring Boot整合Spring Data JPA操作数据
一. Sping Data JPA 简介 Spring Data JPA 是 Spring 基于 ORM 框架.JPA 规范的基础上封装的一套 JPA 应用框架,底层使用了 Hibernate 的 J ...
- Spring Data JPA(官方文档翻译)
关于本书 介绍 关于这本指南 第一章 前言 第二章 新增及注意点 第三章 项目依赖 第四章 使用Spring Data Repositories 4.1 核心概念 4.2 查询方法 4.3 定义rep ...
- Spring Data JPA 与 MyBatis 对比,你喜欢用哪个?
来源:jianshu.com/p/3927c2b6acc0 概述 Spring Data JPA是Spring Data的子模块.使用Spring Data,使得基于"repositorie ...
- Spring Data JPA例子[基于Spring Boot、Mysql]
关于Spring Data Spring社区的一个顶级工程,主要用于简化数据(关系型&非关系型)访问,如果我们使用Spring Data来开发程序的话,那么可以省去很多低级别的数据访问操作,如 ...
- springdatajpa命名规则_简单了解下spring data jpa
公司准备搭建一个通用框架,以后项目就用统一一套框架了 以前只是听过jpa,但是没有实际用过 今天就来学习下一些简单的知识 什么是JPA 全称Java Persistence API,可以通过注解或者X ...
最新文章
- python子进程模块subprocess
- Scala函数的可变参数和参数默认值及带名参数
- 克制linux启动盘,制作Linux启动盘的四种方法
- 大学生计算机课程考试试题,大学生计算机基础课程考试系统研究与实现
- .NET Core开发实战(第13课:配置绑定:使用强类型对象承载配置数据)--学习笔记...
- Ubuntu MySQL 配置 time_zone
- 20145234黄斐《信息安全系统设计基础》第十周
- 买的是ARM指令集授权,不是已设计好的CPU核?
- 饿了么UI框架表单验证
- HCI opcode
- Docker-设置redis容器主从模式哨兵模式
- 科研画图都用什么软件
- 一篇难得的关于傅里叶分析的好文
- 【大数据开发必看】可视化BI神器---FineBI
- 2021-02-14
- alwayson的同步提交和异步提交
- 用深度学习LSTM炒股:对冲基金案例分析
- hydra的基本使用
- 12306.cn火车票自动订票软件
- 最长黑白相间连续串(有规律)