<properties> <spring.version>4.2.4.RELEASE</spring.version> <hibernate.version>5.0.7.Final</hibernate.version> <slf4j.version>1.6.6</slf4j.version> <log4j.version>1.2.12</log4j.version> <c3p0.version>0.9.1.2</c3p0.version> <mysql.version>5.1.6</mysql.version> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <!--spring start--> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.6.8</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <!--spring end--> <!--hibernate start--> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>${hibernate.version}</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>${hibernate.version}</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>5.2.1.Final</version> </dependency> <!--hibernate end--> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>${c3p0.version}</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>${log4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.version}</version> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-jpa</artifactId> <version>1.9.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>4.2.4.RELEASE</version> </dependency> <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> </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:aop="http://www.springframework.org/schema/aop" 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/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd"> <!--1.數據源連接池 c3p0 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="com.mysql.jdbc.Driver"/> <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/spring-data-jpa?characterEncoding=UTF-8"/> <property name="user" value="root"/> <property name="password" value="MYSQL"/> </bean> <!--工廠類對象 本地容器實力管理工廠對象--> <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> <property name="dataSource" ref="dataSource"/> <!--引用數據源--> <property name="packagesToScan" value="com.jpa.entity"/> <!--掃描entity層對象--> <!--配置jpa供應商適配器--> <property name="jpaVendorAdapter"> <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> <property name="showSql" value="true"/> <!--打印sql語句--> <property name="generateDdl" value="true"/> <!--sql語句格式化--> <property name="database" value="MYSQL"/> <!--使用MYSQL數據庫--> </bean> </property> </bean> <!--配置事務 jpa事務管理--> <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="entityManagerFactory"/> <!--引用工廠對象--> </bean> <!--事務驅動--> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="get*" read-only="true"/> <tx:method name="find*" read-only="true"/> <tx:method name="*" propagation="REQUIRED"/> </tx:attributes> </tx:advice> <!--配置切面--> <aop:config> <aop:pointcut id="pointcut" expression="execution(* com.jpa.service.*.*(..))"/> <aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut"/> </aop:config> <!--dao層--> <jpa:repositories base-package="com.jpa.dao" transaction-manager-ref="transactionManager" entity-manager-factory-ref="entityManagerFactory" /> </beans>
import javax.persistence.*; @Entity //jpa 的實體類 @Table(name = "custome") //配飾實體類和數據庫的關系, name對應表名 public class Custome { @GeneratedValue(strategy = GenerationType.IDENTITY) //主鍵自動增持 @Id @Column(name="cust_id") private long custId; @Column(name="cust_name") private String custName; @Column(name="cust_level") private String custLevel; @Column(name="cust_address") private String custAddress; public long getCustId() { return custId; } public void setCustId(long custId) { this.custId = custId; } public String getCustName() { return custName; } public void setCustName(String custName) { this.custName = custName; } public String getCustLevel() { return custLevel; } public void setCustLevel(String custLevel) { this.custLevel = custLevel; } public String getCustAddress() { return custAddress; } public void setCustAddress(String custAddress) { this.custAddress = custAddress; } @Override public String toString() { return "Custome{" + "custId=" + custId + ", custName='" + custName + '\'' + ", custLevel='" + custLevel + '\'' + ", custAddress='" + custAddress + '\'' + '}'; }
import com.jpa.entity.Custome; import org.springframework.data.jpa.repository.JpaRepository; public interface CustomerDao extends JpaRepository<Custome,Long> { }
import com.jpa.dao.CustomerDao; import com.jpa.entity.Custome; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.transaction.annotation.Transactional; import java.util.List; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:applicationContext.xml") public class TestCustomer { @Autowired private CustomerDao customerDao; @Test //添加數據 public void addCustomer(){ for (int i=0;i<20;i++){ Custome custome = new Custome(); custome.setCustName("張三"); custome.setCustAddress("中華大陸"); custome.setCustLevel("vip"); customerDao.save(custome); } } @Test //根據id刪除數據 public void deleteCustomer(){ customerDao.delete(2l); } @Test //根據id查詢數據 public void findById(){ Custome custome = customerDao.findOne(7l); System.out.println(custome); } @Test @Transactional //加上事務注解,在方法結束 之前不會斷 public void findById2(){ Custome custome = customerDao.findOne(7L); System.out.println("---------------------"); System.out.println(custome); } @Test //查詢全部 public void findAll(){ List<Custome> customeList = customerDao.findAll(); for (Custome custome:customeList){ System.out.println(custome); } } @Test //分頁查詢 public void testPage(){ PageRequest pageRequest = new PageRequest(0, 5); //0第一頁 Page<Custome> customePage = customerDao.findAll(pageRequest); long totalElements = customePage.getTotalElements(); System.out.println("總記錄數:"+totalElements); int totalPages = customePage.getTotalPages(); System.out.println("總頁碼數:"+totalPages); List<Custome> content = customePage.getContent(); //該頁內容 for (Custome custome:content){ System.out.println(custome); } } }
1 需求 使用springDataJpa 實現數據庫的CRUD 2 創建數據庫 Customer 3 開發步驟 a 創建Maven 工程 b 添加依賴 mysql c3p0 Hibernate springDataJpa Spring 相關jar包 ## 2SpringDataJpa中查詢