Jpa实践

2018-05-14  本文已影响0人  机器不能学习

这次实践的内容是数据库连接,自动规范查询,分页。

--本来没有数据库连接 却连了一天

这里从连接到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

上一篇 下一篇

猜你喜欢

热点阅读