这次实践的内容是数据库连接,自动规范查询,分页。
--本来没有数据库连接 却连了一天
这里从连接到Mvc记录一遍。
开始是数据库配置。
用properties的话特别特别注意
要先指定该文件的目录再用:
Properties prop =newProperties();StringrealPath =“.properties”//相对绝对路径都可以,但是要有properties;Stringvalue= prop.getProperty("goopalpayPay_key").toString();
或者用@PropertySource(value ="file:E:/dev-chinagpay.properties")
@AutowiredprivateEnvironment env;
但我都没成功,相对路径绝对路径都试了,大神知道请指点。
首先应该配置的是datasource 一般我都用ComboPooledDataSource来配置,ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setDriverClass("com.mysql.jdbc.Driver");
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/test");
dataSource.setUser("root");
dataSource.setPassword("root");
dataSource.setMaxPoolSize(20);
dataSource.setMinPoolSize(5);
dataSource.setInitialPoolSize(10);
dataSource.setMaxIdleTime(300);
dataSource.setAcquireIncrement(5);
dataSource.setIdleConnectionTestPeriod(60);
获得datasource之后才是获得EntityManagerFactory(这东西类似session工厂,可用它获得Entitymanager)。
@Bean public EntityManagerFactory entityManagerFactory() {
HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean(); factory.setJpaVendorAdapter(vendorAdapter); //此处com.example.*.model是你的java bean所在的包名
factory.setPackagesToScan("com.there.Webpro");
factory.setDataSource(dataSource); MapjpaProperties = new HashMap();
factory.setJpaPropertyMap(jpaProperties);
factory.afterPropertiesSet();
return factory.getObject();
}
然后需要配置事务,没有事务是运行不起来的。
@Bean
public PlatformTransactionManager transactionManager() {
JpaTransactionManager txManager = new JpaTransactionManager();
txManager.setEntityManagerFactory(entityManagerFactory());
return txManager;
}
现在数据库就配置完了
现在是将一些继承类
jpa好处是你继承了一些类,甚至在DAO层不需要实现也能经行操作
(1) CrudRepository: 继承 Repository,实现了一组 CRUD 相关的方法
(2)PagingAndSortingRepository: 继承 CrudRepository,实现了一组分页排序相关的方法
(3)JpaRepository: 继承 PagingAndSortingRepository,实现一组 JPA 规范相关的方法
分页查询
分页查询我测试是直接用在规范方法中,自己写的方法里我还没有用过。
传入DAO操作函数一个 pageable ,可以从多处获取它。
自己new PageRequest(第几页,每页数据)或者在控制器中直接传入Pageable
获得的多个数组可以用Page<T>来装。
我的错误集中在获取上下文的时候,报错:没有该文件。这是怎么回事。我的问题是,没有在配置类上加@compentscan
网友评论