【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
【查询方法定义规则】
【为什么使用@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 查询条件