SpringDateJpa的使用

使用spring,spring是帮助我们构造对象的。必须在bean中添加无参构造方法,不然会报错

无法init初始化的错误!

Spring Data介绍

Spring 的一个子项目。用于简化数据库访问,支持NoSQL和关系数据库存储。其主要目标是使数据库的访问变得方便快捷。

获取数据源 jdbc 

jpa实体管理工厂/数据源/适配器需要使用哪个全自动工具这里时Hibernatejap

设置jpa特有的属性/操作什么数据库

为jpa配置事务/只有事务才能提交数据库

spring date jpa配置dao层/输入要继承CrudRepository<shopBean,String>类的包的全路径

指定事务使用哪个注解管理器

 

<?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:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:cache="http://www.springframework.org/schema/cache"
       xmlns:jaxws="http://cxf.apache.org/jaxws"
       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-3.1.xsd
                    http://www.springframework.org/schema/tx
                    http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
                    http://www.springframework.org/schema/aop
                    http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
                    http://www.springframework.org/schema/context
                    http://www.springframework.org/schema/context/spring-context-3.1.xsd
                    http://www.springframework.org/schema/cache
                    http://www.springframework.org/schema/cache/spring-cache-3.1.xsd
                    http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
                    http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd"
       default-lazy-init="true">
    <context:component-scan base-package="com.gesula.shop"></context:component-scan>
    <context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>
    <!-- 获得数据源-->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
       <property name="url" value="${jdbc_url}"></property>
        <property name="username" value="${jdbc_user}"></property>
        <property name="driverClassName" value="${jdbc_driver}"></property>
        <property name="password" value="${jdbc_password}"></property>
    </bean>
    <!-- JPA实体管理器工厂 -->
    <bean id="manager" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
            <property name="dataSource" ref="dataSource"></property>
        <property name="packagesToScan" value="com.gesula.shop.bean"></property>
        <!-- hibernate的适配器 -->
        <property name="jpaVendorAdapter" >
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"></bean>
        </property>
        <property name="jpaProperties">
            <props>
                <prop key="hibernate.current_session_context_class">thread</prop>
                <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop><!-- validate/update/create -->
                <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
                <prop key="hibernate.format_sql">${format_sql}</prop>

                <!-- 建表的命名规则  DefaultNamingStrategy,ImprovedNamingStrategy,EJB3NamingStrategy-->
                <prop key="hibernate.ejb.naming_strategy">org.hibernate.cfg.DefaultNamingStrategy</prop>

            </props>
        </property>
    </bean>
    <!-- 设置JPA实现厂商的特定属性 -->
    <bean id="hibernateJpaVendorAdapter"
          class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
        <property name="databasePlatform" value="${hibernate.dialect}"/>
    </bean>

    <!-- Jpa 事务配置 -->
    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="manager"/>
    </bean>

    <!-- Spring Data Jpa配置DAO层 -->
    <jpa:repositories base-package="com.gesula.shop.dao"   entity-manager-factory-ref="manager"/>

    <!-- 使用annotation定义事务 -->   <!---注解事务指定事务使用那个管理器 -->
    <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" />
</beans>

配置好以后我们需要在dao层接口类中书写Hql/sql语句/如果使用Hibernate自带方法书写,那么这个接口需要

extends CrudRepository<shopBean,String>类  第一个参数为需要操作的对象,第二个参数为,你Id的类型
//存在于import org.springframework.data.repository.CrudRepository;包下
public interface IShopDao extends CrudRepository<shopBean,String>{

    //按照类型查询所有商品/方法中的占位符是从1开始的,如果有多个按顺序依次递增?1/?2....
    @Query("from shopBean where genre=?1")
    public List<shopBean> findAllGenre(String genre);
   //查询所有未上架的商品 这里使用sql
   @Query(value = "SELECT * FROM t_shop where status=?1 ",nativeQuery = true)
   public List<shopBean> findAllOne(int i);
    //按照商品id修改未上架的商品的为上架,并且设定上架时间
    //修改时用于原声sql语句不然会出现找不到resultSet
    @Modifying(clearAutomatically = true)
    @Query(value="update t_shop  set  startDate=?1 , status=0  where  id=?2  and  status=1 ",nativeQuery =true)
   public int update(Date date,String name);
}

当然Hql和sql书写方式是不一样的,其中查询注解为@Query()是为Hql专用的/如果要在@Query()中写sql原生语句,那么就需要在@Query(value="sql语句",nativeQuery =true);nativeQuery =true声明为当前sql是条原生语句

添加的话直使用save()添加

删除和修改Hql方法中自带的有常规操作;都是以id来操作的。

如果要使用sql更改或删除操作那么必须在@Query(value="sql语句",nativeQuery =true)前加上注解

@Modifying(clearAutomatically = true)不然会报错,找不到 ResultSet/使用该注解是要告诉计算机这是条删除/修改语句

 

--------------------------------------------------------

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【2021年,将Spring全家桶系列课程进行Review,修复顺序等错误。进入2022年,将Spring的课程进行整理,整理为案例精讲的系列课程,并新增高级的Spring Security等内容,通过手把手一步步教你从零开始学会应用Spring,课件将逐步进行上传,敬请期待】 本课程是Spring案例精讲课程的第五部分Spring Data,Spring案例精讲课程以真实场景、项目实战为导向,循序渐进,深入浅出的讲解Java网络编程,助力您在技术工作中更进一步。 本课程聚焦Spring Data的核心知识点:Spring Data Repository、Spring Data JPA(增删改查案例、实体自动生成数据库表、增加新的Repository方法、分页、排序、@NamedQuery、@Query及其分页和排序及参数设置、@NamedEntityGragh实现多对多映射、及QueryHints等)、Spring Data JDBC(增删改查案例、@Query等)的案例介绍, 快速掌握Spring Data的核心知识,快速上手,为学习及工作做好充足的准备。 由于本课程聚焦于案例,即直接上手操作,对于Spring的原理等不会做过多介绍,希望了解原理等内容的需要通过其他视频或者书籍去了解,建议按照该案例课程一步步做下来,之后再去进一步回顾原理,这样能够促进大家对原理有更好的理解。 【通过Spring全家桶,我们保证你能收获到以下几点】 1、掌握Spring全家桶主要部分的开发、实现2、可以使用Spring MVC、Spring Boot、Spring Cloud及Spring Data进行大部分的Spring开发3、初步了解使用微服务、了解使用Spring进行微服务的设计实现4、奠定扎实的Spring技术,具备了一定的独立开发的能力  【实力讲师】 毕业于清华大学软件学院软件工程专业,曾在Accenture、IBM等知名外企任管理及架构职位,近15年的JavaEE经验,近8年的Spring经验,一直致力于架构、设计、开发及管理工作,在电商、零售、制造业等有丰富的项目实施经验  【本课程适用人群】如果你是一定不要错过!  适合于有JavaEE基础的,如:JSP、JSTL、Java基础等的学习者没有基础的学习者跟着课程可以学习,但是需要补充相关基础知识后,才能很好的参与到相关的工作中。 【Spring全家桶课程共包含如下几门】5. 进阶篇:SpringData 

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值