SpringDataJPA开发环境的搭建
这里简单的介绍一下使用maven工程创建SpringDataJPA的开发环境的搭建
首先引入依赖
<dependencies>
<!-- junit单元测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!--spring使用aop需要引入的一个包-->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.9</version>
</dependency>
<!--mysql驱动包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.39</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-entitymanager
这个是实体类管理
-->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.4.1.Final</version>
</dependency>
<!--连接池-->
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data-jpa -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>2.1.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.1.5.RELEASE</version>
</dependency> <!-- el beg 使用spring data jpa 必须引入 -->
<dependency>
<groupId>javax.el</groupId>
<artifactId>javax.el-api</artifactId>
<version>2.2.4</version>
</dependency> <dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>javax.el</artifactId>
<version>2.2.4</version>
</dependency>
<!-- el end --> <dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.20.0-GA</version>
</dependency>
</dependencies>
编写配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:jpa="http://www.springframework.org/schema/data/jpa"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/data/jpa
http://www.springframework.org/schema/data/jpa/spring-jpa.xsd"> <!--
1.配置数据源
2.配置entityManagerFactory对象
3.事务
4.jpa
-->
<!--1.配置数据源-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
<property name="jdbcUrl" value="jdbc:mysql:///springdatajpa"></property>
<property name="user" value="root"></property>
<property name="password" value="root"></property>
</bean>
<!--2.配置entityManagerFactory-->
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<!--配置数据源-->
<property name="dataSource" ref="dataSource"></property>
<!--配置jpaVendorAdapter适配器-->
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="database" value="MYSQL"></property>
</bean>
</property>
<property name="jpaProperties">
<props>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
<property name="packagesToScan" value="com.qingmu.domain"></property>
</bean>
<!--3.配置事务-->
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<tx:annotation-driven></tx:annotation-driven>
<!--配置JPA-->
<jpa:repositories base-package="com.qingmu.dao"
entity-manager-factory-ref="entityManagerFactory"
transaction-manager-ref="transactionManager">
</jpa:repositories>
</beans>
使用JPA注解配置映射关系(在实体类中)
package com.qingmu.domain; import javax.persistence.*; /**
* @Auther:qingmu
* @Description:脚踏实地,只为出人头地
* @Date:Created in 20:21 2019/5/15
*/
@Entity
@Table(name = "x_user")
public class Customer {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "x_id")
private Long id;
@Column(name = "x_age")
private int age;
@Column(name = "x_name")
private String name; public Long getId() {
return id;
} public void setId(Long id) {
this.id = id;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Customer() {
} public Customer(int age, String name) { this.age = age;
this.name = name;
} @Override
public String toString() {
return "Customer{" +
"id=" + id +
", age=" + age +
", name='" + name + '\'' +
'}';
}
}
创建一个Dao层接口,并实现JpaRepository和JpaSpecificationExecutor
提供相应的泛型
package com.qingmu.dao; import com.qingmu.domain.Customer; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor; /**
* @Auther:qingmu
* @Description:脚踏实地,只为出人头地
* @Date:Created in 20:48 2019/5/15
*/
public interface UserDao extends JpaSpecificationExecutor<Customer>,JpaRepository<Customer,Long> {
}
进行测试
package com.qingmu; import com.qingmu.dao.UserDao;
import com.qingmu.domain.Customer;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional; import java.util.Optional; /**
* @Auther:qingmu
* @Description:脚踏实地,只为出人头地
* @Date:Created in 20:49 2019/5/15
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:beans.xml")
public class CustomerTest01 {
@Autowired
private UserDao userDao; @Test
@Rollback(false)
@Transactional
public void saveTest(){
Customer customer = new Customer();
customer.setId(1L);
customer.setName("太阳");
customer.setAge(38);
userDao.save(customer);
}
@Test
@Rollback(false)
@Transactional
public void updateTest(){
Customer customer = new Customer(37,"调养");
customer.setId(1L);
userDao.save(customer);
}
@Test
@Transactional
@Rollback(false)
public void testFind1(){
/**
* Optional 是jdk1.8 新增的一个类 用来避免空指针的
*
* 自己程序中 如果养成好习惯 都会做判空运算
* User user=xxx();
* if(user!=null){
* //写自己的逻辑
* }
* Optional 就是一个包装盒子 里面放对象
*/
Optional<Customer> userDaoById = userDao.findById(1L);
Customer customer = userDaoById.get();
System.out.println(customer);
/**if(optional.isPresent()){
* User user = optional.get();
* * System.out.println(user);
}*/
//官方 推荐使用手法
}
@Test
@Transactional
@Rollback(false)
public void testFind2(){
Customer one = userDao.getOne(1L);
System.out.println(one);
}
@Test
@Transactional
@Rollback(false)
public void testDele(){
Customer customer = userDao.findById(1L).get(); userDao.delete(customer);
}
}
SpringDataJPA开发环境的搭建的更多相关文章
- SpringDataJpa开发环境的搭建以及使用
一.所需工具 安装jdk.IntelliJ IDEA和mysql数据库. 二.SpringDataJpa快速起步 开发环境的搭建: ①.在IDEA软件上添加依赖包:在http://mvnreposit ...
- 总结:Mac前端开发环境的搭建(配置)
新年新气象,在2016年的第一天,我入手了人生中第一台自己的电脑(大一时好友赠送的电脑在一次无意中烧坏了主板,此后便不断借用别人的或者网站的).macbook air,身上已无分文...接下来半年的房 ...
- Idea开发环境中搭建Maven并且使用Maven打包部署程序
1.配置Maven的环境变量 a.首先我们去maven官网下载Maven程序,解压到安装目录,如图所示: b.配置M2_HOME的环境变量,然后将该变量添加到Path中 备注:必须要有JAVA_HOM ...
- Linux学习心得之 Linux下命令行Android开发环境的搭建
作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Linux学习心得之 Linux下命令行Android开发环境的搭建 1. 前言2. Jav ...
- Java开发环境的搭建以及使用eclipse从头一步步创建java项目
一.java 开发环境的搭建 这里主要说的是在windows 环境下怎么配置环境. 1.首先安装JDK java的sdk简称JDK ,去其官方网站下载最近的JDK即可..http://www.orac ...
- Linux环境下Android开发环境的搭建
本文主要介绍在Ubuntu下Android开发环境的搭建,所使用的IDE为Eclipse(Android Studio同理,且可省去配置SDK以及安装adt插件的步骤). 1.安装JDK (1)JDK ...
- Apache+MySQL+PHP开发环境的搭建(二)
通过自主选择相应的apache,mysql,php等软件,根据自己的应用开发需求进行安装.此方法搭建的环境自主性较强,搭建过程较为复杂,繁琐. 1.所需软件: Apache: http-2.2.22- ...
- Apache+MySQL+PHP开发环境的搭建(一)
通过套件来安装和配置php开发环境. 1.所需软件:AppServ(因为是开源,任何网站都能下载) 安装本软件基本上就是下一步. 2.进行安装 选择一个盘安装该软件点击next继续: 根据自己的实际情 ...
- windows上JSP开发环境全搭建
JSP开发环境全搭建 最近需要用到JSP做项目,所以要配置JSP的开发环境,总结一下配置步骤以备以后再配置需要. 配置JAVA开发环境,配置JDK 下载JDK,在这里下载开发所需的JDK,可以根据自己 ...
随机推荐
- Orm 配置说明
一.在线技术文档: http://files.cnblogs.com/files/humble/d.pdf 二.使用的大致流程 1.首先下载代码生成器,可以一键生成项目Model层;(其中含有 ...
- CUDA 到底什么玩意
* CUDA与cuDNN * 什么是CUDA * CUDA(ComputeUnified Device Architecture),是显卡厂商NVIDIA推出的运算平台. CUDA是一种由NVIDIA ...
- win10 .net framework 3.5 离线安装 不需要外网
win 10如果安装系统时没有安装.net 3.5 那么在以后安装时就必须联网. win10 .net framework 3.5 离线安装工具: 链接: https://pan.baidu.com/ ...
- python 基础 -- python 模块
--------- python 模块 一个文件就是一个模块 作用: 模块可以定义函数.类和变量 模块里也能包含可执行的代码 引用模块的写法: import 模块名 from 模块名 ...
- Lambda表达式和方法引用
1 , 为什么用lambda表达式 将重复固定的代码写法简单化 2 ,lambda表达式的实质 对函数式接口的实现(一个接口中只有一个抽象方法的接口被称为函数式接口) package com.mo ...
- Springboot Actuator之十一:actuator PublicMetrics
前言接下来的几篇文章我们来分析一下spring-boot-actuator 中在org.springframework.boot.actuate.metrics中的代码,如图: 这里的代码不仅多,而且 ...
- VueTreeselect出现unknown解决方法
VueTreeselect 控件显示[unknown]如图: treeselect 绑定的值需要与options输出的id相对应,若是空值,请不要给空字符串,0,等,因为会出现unknown,并且当选 ...
- Visual Studio 重命名项目名
1. 打开VS Studio,重命名项目 2. 重命名对应的项目文件夹,并重命名项目文件夹下的这两个文件名: 3. 用记事本打开解决方案,修改对应的项目名字和路径 未完 ...... 点击访问原文(进 ...
- 深入理解TCP/IP传输层
传输层:负责数据能够从发送端传到接收端(只需要关注点对点的传输,中间的传输过程一概不管) UDP和TCP UDP(全双工):1.无连接,2不可靠,3.面向数据报 分别表示UDP源端口号.目的端口号.U ...
- Java 11 新特性介绍
Java 11 已于 2018 年 9 月 25 日正式发布,之前在Java 10 新特性介绍中介绍过,为了加快的版本迭代.跟进社区反馈,Java 的版本发布周期调整为每六个月一次——即每半年发布一个 ...