Spring Data 起步

时间:2022-11-20 18:14:38

【Maven 坐标】G A V

………………………………………………………………………………………………………………………………………………

【JDBC】

Connection 连接数据库

Statement 执行我们的查询语句

ResultSet 结果集

Test Case 测试用例

………………………………………………………………………………………………………………………………………………

【JDBCUtil】封装一下常用 Connection 、Release 功能函数。

 Class.forName(driverClass);
DriverManager.getConnection(url,user,password);

………………………………………………………………………………………………………………………………………………

【Spring JDBCTemplate】

1.maven

2.datasource jdbctemplate 传统方式通过 beans.xml 注入,依赖也是xml管理,我们在 appContext 取出容器 bean。

3.Test Case

………………………………………………………………………………6

【Spring Data JPA 大一统注解】MyBatis 比较业界主流,从 mvn 就可以知道。

【标准配置】

<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: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/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"> <!--1 配置数据源-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
<property name="url" value="jdbc:mysql:///db_name"/>
</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.imooc"/> <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.imooc" entity-manager-factory-ref="entityManagerFactory"/> <context:component-scan base-package="com.imooc"/> </beans>

【建表】JPA规范 只要我们在实体上写上注解 即 配置表约束。@Table 可以指定表名

【实现 类似 DAO】extends Repository<entity,pKeyType>  等同于 @RepositoryDefinition(domainClass,idClass) 注解的类

【Test Case】传统都少不了 context.getBean()...

………………………………………………………………………………………………

最主要的 Repository 子接口,CrudRepository、PagingAndSortingRepository、JpaRepository

【查询方法定义规则】

Spring Data 起步

【为什么使用@Query】1.方法名长问题 2.复杂需求 3.实际开发实用性高 (注意 sql语句大小写在注解很重要,比如聚合函数就用 COUNT)

支持原生查询 @Query(nativequery=true)

支持索引参数占位符 @Query("?1")

支持命名参数占位符 @Query(":col_name")

其他使用 Like Containing % %

………………………………………………………………………………………………………………………………………………

【Service层@Transactional + Repo层 更新和删除 @Modifying@Query】

………………………………………………………………………………………………………………………………………………

【CrudRepository】2.0和1.5 API有变化。

【PagingAndSortingRepository】Pageable 、 Sort

【JpaRepository】2.0和1.5 API有变化。

【常用 JpaSpecificationExecutorRepository】Specification + Path ... Criteria 查询条件