利用SpringData环境搭建项目
来源:互联网 发布:管家婆数据库安装 编辑:程序博客网 时间:2024/06/16 20:02
工程结构
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>springdataJPA</groupId> <artifactId>springdataJPA</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <name>springdataJPA</name> <description/> <properties> <webVersion>3.0</webVersion> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>org.glassfish</groupId> <artifactId>javax.enterprise.deploy</artifactId> <version>3.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.glassfish</groupId> <artifactId>javax.jms</artifactId> <version>3.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.glassfish</groupId> <artifactId>javax.management.j2ee</artifactId> <version>3.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.eclipse.persistence</groupId> <artifactId>javax.persistence</artifactId> <version>2.0.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.glassfish</groupId> <artifactId>javax.resource</artifactId> <version>3.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.glassfish</groupId> <artifactId>javax.security.auth.message</artifactId> <version>3.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.glassfish</groupId> <artifactId>javax.security.jacc</artifactId> <version>3.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.glassfish</groupId> <artifactId>javax.servlet</artifactId> <version>3.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.glassfish</groupId> <artifactId>javax.servlet.jsp</artifactId> <version>3.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.glassfish</groupId> <artifactId>javax.servlet.jsp.jstl</artifactId> <version>3.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api-osgi</artifactId> <version>2.2.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.ws.rs</groupId> <artifactId>jsr311-api</artifactId> <version>1.1.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.glassfish.web</groupId> <artifactId>jstl-impl</artifactId> <version>1.2</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.3</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.xml</groupId> <artifactId>webservices-api-osgi</artifactId> <version>2.0.1</version> <scope>provided</scope> </dependency> <!--junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> </dependency> <!--mysql driver --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.38</version> </dependency> <!--spring-jdbc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.3.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.3.5.RELEASE</version> </dependency> <!-- spring-data-jpa --> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-jpa</artifactId> <version>1.8.0.RELEASE</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>4.3.6.Final</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.22</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> <version>2.7</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.7</version> </dependency> </dependencies> <build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> <plugin> <artifactId>maven-war-plugin</artifactId> <version>2.6</version> <configuration> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> </plugins> </build></project>
spring.xml
<?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:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:task="http://www.springframework.org/schema/task" xmlns:jpa="http://www.springframework.org/schema/data/jpa" xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd http://www.springframework.org/schema/data/repository http://www.springframework.org/schema/data/repository/spring-repository-1.6.xsd"> <!-- 引入外部资源 --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath:jdbc.properties</value> </list> </property> </bean> <!-- 1.数据库连接--> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </bean> <!-- 2.配置entityManagerFactory --> <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="jpaVendorAdapter"> <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"/> </property> <property name="packagesToScan" value="com.wangh"/> <property name="jpaProperties"> <props> <prop key="hibernate.ejb.naming_strategy">org.hibernate.cfg.ImprovedNamingStrategy</prop> <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.format_sql">true</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> </props> </property> </bean> <!-- 3.配置事务管理 --> <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="entityManagerFactory"/> </bean> <!-- 4.配置支持注解的事务 --> <tx:annotation-driven transaction-manager="transactionManager"/> <!-- 5.配置spring-data --> <jpa:repositories base-package="com.wangh" entity-manager-factory-ref="entityManagerFactory"/> <context:component-scan base-package="com.wangh"/></beans>
jdbc.properties
jdbc.url=jdbc:mysql:///spring_data?characterEncoding=utf8&useSSL=falsejdbc.username=rootjdbc.password=****jdbc.driver=com.mysql.jdbc.Driver
实体类
@Entity
public class Employee {
private Integer id;
private String name;
private Integer age;
@GeneratedValue@Idpublic Integer getId() { return id;}public void setId(Integer id) { this.id = id;}public String getName() { return name;}public void setName(String name) { this.name = name;}public Integer getAge() { return age;}public void setAge(Integer age) { this.age = age;}
}
接口
package com.wangh.repository;import org.springframework.data.repository.Repository;import com.wangh.model.Employee;public interface EmployeeRepository extends Repository<Employee, Integer>{ public Employee findByName(String name); //where name like ?% and age < public List<Employee> findByNameStartingWithAndAgeLessThan(String name, Integer age); //where name like %? and age < public List<Employee> findByNameEndingWithAndAgeLessThan(String name, Integer age); //where name in(? ? ?)or age<? public List<Employee> findByNameInOrAgeLessThan(List<String> names, Integer age); //使用Query注解查询 @Query("select e from Employee e where id=(select max(id) from Employee)") public Employee getEmployeeByMaxId(); //占位符查询 @Query("select e from Employee e where e.name=?1 and e.age=?2") public List<Employee> queryByParamers(String name ,Integer age); @Query("select e from Employee e where e.name=:name and e.age=:age") public List<Employee> queryByParamers2(@Param("name")String name ,@Param("age")Integer age); @Query("select count(*) from Employee e") public Long getCount(); @Modifying @Query("update Employee set age=:age where id=:id") public void update(@Param("age")Integer age ,@Param("id")Integer id);}
service层
修改操作需添加事务,事务放在service层处理,在dao层添加@Modifying
package com.wangh.service;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.wangh.repository.EmployeeRepository;
@Service
public class EmployeeService {
@Resourceprivate EmployeeRepository employeeRepository;@Transactionalpublic void update(Integer id , Integer age){ employeeRepository.update(age, id);}
}
测试类
package springdata;import java.util.ArrayList;import java.util.List;import org.junit.After;import org.junit.Before;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.wangh.model.Employee;import com.wangh.repository.EmployeeRepository;import com.wangh.service.EmployeeService;public class RepositoryTest { private ApplicationContext ctx = null; private EmployeeRepository emp = null; private EmployeeService esv = null; @Before public void before(){ ctx = new ClassPathXmlApplicationContext("spring.xml"); emp = ctx.getBean(EmployeeRepository.class); esv = ctx.getBean(EmployeeService.class); System.out.println("before"); } @After public void after(){ ctx = null; esv = null; System.out.println("after"); } @Test public void testRepository(){ Employee empolyee = emp.findByName("wh"); System.out.println(empolyee.getName()+","+empolyee.getAge()+","+empolyee.getId()); } @Test public void testFindByNameStartingWithAndAgeLessThan(){ List<Employee> list = emp.findByNameStartingWithAndAgeLessThan("t", 20); for(Employee empolyee: list){ System.out.println(empolyee.getName()+","+empolyee.getAge()+","+empolyee.getId()); } } @Test public void testFindByNameEndingWithAndAgeLessThan(){ List<Employee> list = emp.findByNameEndingWithAndAgeLessThan("6", 20); for(Employee empolyee: list){ System.out.println(empolyee.getName()+","+empolyee.getAge()+","+empolyee.getId()); } } @Test public void testFindByNameInOrAgeLessThan(){ List<String> names = new ArrayList<String>(); names.add("t1"); names.add("t2"); List<Employee> list = emp.findByNameInOrAgeLessThan(names, 20); for(Employee empolyee: list){ System.out.println(empolyee.getName()+","+empolyee.getAge()+","+empolyee.getId()); } } @Test public void testGetEmployeeByMaxId(){ Employee empolyee = emp.getEmployeeByMaxId(); System.out.println(empolyee.getName()+","+empolyee.getAge()+","+empolyee.getId()); } @Test public void testqueryByParamers(){ List<Employee> list = emp.queryByParamers("wanghao", 20); for(Employee empolyee: list){ System.out.println(empolyee.getName()+","+empolyee.getAge()+","+empolyee.getId()); } } @Test public void testqueryByParamers2(){ List<Employee> list = emp.queryByParamers2("wanghao", 20); for(Employee empolyee: list){ System.out.println(empolyee.getName()+","+empolyee.getAge()+","+empolyee.getId()); } } @Test public void testGetCount(){ Long l = emp.getCount(); System.out.println(l); } @Test public void testUpdate(){ esv.update(1, 27); }}
测试结果
注意
阅读全文
2 0
- 利用SpringData环境搭建项目
- 搭建Spring4+Spring4MVC+SpringData+JPA+Hibernate4项目
- 利用Docker搭建java项目开发环境
- Spring+SpringMVC+Hibernate+JPA+SpringData+Ehcache+C3p0+MySQL项目搭建
- Elicpse中搭建SpringData+jpa
- 跟着和尚一步一步搭建springmvc+springdata-jpa+mybatis+shiro+bootstrap项目(二)
- 跟着和尚一步一步搭建springmvc+springdata-jpa+mybatis+shiro+bootstrap项目(一)
- 跟着和尚一步一步搭建springmvc+springdata-jpa+mybatis+shiro+bootstrap项目(三)
- 笔记,项目环境搭建。
- 项目环境搭建步骤
- 项目环境搭建步骤
- eclipse项目环境搭建
- maven项目环境搭建
- 项目环境搭建
- AngularJS项目环境搭建
- RN项目环境搭建
- SpringMVC项目环境搭建
- 【Struts2】--项目环境搭建
- git学习笔记
- Android 深入分析Activity生命周期
- jdbc.properties
- Java与算法(4)
- 获取服务器数据通过Gson解析显示Listview上
- 利用SpringData环境搭建项目
- Java时间格式转换大
- bzoj 2244 [SDOI2011]拦截导弹
- jqGrid 多选
- Fiddler:更简单的方式读、写本地文件
- [leetcode]: 278. First Bad Version
- Oracle语句记录
- aspx前台调用后台的变量
- Ubuntu+cuda+CuDnn+Caffe完美安装教程