SpringData JPA 如何搭建 xml的配置方式

 更新时间:2023年12月18日 09:34:41   作者:荭色海湾  
这篇文章主要介绍了SpringData JPA 如何搭建 xml的配置方式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

1.导入版本管理依赖 到父项目里

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.springframework.data</groupId>
      <artifactId>spring-data-bom</artifactId>
      <version>2021.1.10</version>
      <scope>import</scope>
      <type>pom</type>
    </dependency>
  </dependencies>
</dependencyManagement>

2.导入spring-data-jpa 依赖 在子模块

  <dependencies>
             <!--    Junit    -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <!--   hibernate -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>5.4.32.Final</version>
        </dependency>
        <!--        mysql  -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
        <!--        jpa  -->
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-jpa</artifactId>
        </dependency>
        <!--     连接池   -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.8</version>
        </dependency>
        <!--     spring -  test    -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.3.10</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

3.创建实体类

package com.kuang.pojo;
import javax.persistence.*;
@Entity//作为 hibernate实体类
@Table(name = "tb_customer")//映射的表名
public class Customer {
    /**
     * @Id: 声明主键的配置
     * @GeneratedValue: 配置主键的生成策略
     *        strategy :
     *            1. GenerationType.IDENTITY :自增 mysql
     *               底层数据库必须支持自动增长 (底层数据库支持的自动增长方式,对id自增)
     *            2. GenerationType.SEQUENCE : 序列 ,oracle
     *               底层书库必须支持序列
     *            3. GenerationType.TABLE : jpa 提供的一种机制, 通过一张数据库表的形式帮助我们完成主键的配置
     *            4. GenerationType.AUTO : 由程序自动的帮助我们选择主键生成策略
     *   @Column(name = "cust_id") 配置属性和字段的映射关系
     *       name: 数据库表中字段的名称
     */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "cust_id")
    private Long custId;//客户的主键
    @Column(name = "cust_name")
    private String custName;//客户的名称
    @Column(name = "cust_address")
    private String custAddress;
    public Long getCustId() {
        return custId;
    }
    public void setCustId(Long custId) {
        this.custId = custId;
    }
    public String getCustName() {
        return custName;
    }
    public void setCustName(String custName) {
        this.custName = custName;
    }
    public String getCustAddress() {
        return custAddress;
    }
    public void setCustAddress(String custAddress) {
        this.custAddress = custAddress;
    }
    @Override
    public String toString() {
        return "Customer{" +
                "custId=" + custId +
                ", custName='" + custName + '\'' +
                ", custAddress='" + custAddress + '\'' +
                '}';
    }
}

4.创建spring配置文件

<?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:jpa="http://www.springframework.org/schema/data/jpa" xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
    https://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/data/jpa
    https://www.springframework.org/schema/data/jpa/spring-jpa.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
    <!-- 用于整合 jpa  相当于 @EnableJpaRepositories       -->
    <jpa:repositories base-package="com.kuang.repositories"
                      entity-manager-factory-ref="entityManagerFactory"
                      transaction-manager-ref="transactionManager"
    />
    <!-- 配置 bean  EntityManagerFactory    -->
    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="jpaVendorAdapter">
            <!--         Hibernate 实现   -->
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                <!--            是否自动的表的生成  true 相当于之前的 update  false 相当于 none  -->
                <property name="generateDdl" value="true"/>
                <!--             是否显示sql   -->
                <property name="showSql" value="true"/>
            </bean>
        </property>
        <!--        扫描实体类的包  来决定哪些实体类做 ORM映射  -->
        <property name="packagesToScan" value="com.kuang.pojo"></property>
<!--    数据源   druid -->
        <property name="dataSource" ref="dataSource"/>
    </bean>
<!--    数据源-->
    <bean class="com.alibaba.druid.pool.DruidDataSource" id="dataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/springdata_jpa?useUnicode=true&amp;useSSL=false&amp;characterEncoding=UTF-8"/>
        <property name="username" value="root"/>
        <property name="password" value="2001"/>
    </bean>
<!--    声明式事务  -->
    <bean class="org.springframework.orm.jpa.JpaTransactionManager" id="transactionManager">
          <property name="entityManagerFactory" ref="entityManagerFactory"/>
    </bean>
<!-- 启动注解方式的声明式事务-->
    <tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>
</beans>

5.创建Repository接口

package com.kuang.repositories;
import com.kuang.pojo.Customer;
import org.springframework.data.repository.CrudRepository;
public interface CustomerRepository extends CrudRepository<Customer,Long> {
}

6.测试通过主键查询

package com.kuang.test;
import com.kuang.pojo.Customer;
import com.kuang.repositories.CustomerRepository;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.Optional;
@ContextConfiguration("/spring.xml")
@RunWith(SpringJUnit4ClassRunner.class)
public class SpringDataJpaTest {
    @Autowired
    private CustomerRepository customerRepository;
    @Test
    public void select() {
        Optional<Customer> byId = customerRepository.findById(1L);
        Customer customer = byId.get();
        System.out.println(customer);
    }
}

package com.kuang.test;
import com.kuang.pojo.Customer;
import com.kuang.repositories.CustomerRepository;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.Optional;
@ContextConfiguration("/spring.xml")
@RunWith(SpringJUnit4ClassRunner.class)
public class SpringDataJpaTest {
    @Autowired
    private CustomerRepository customerRepository;
    @Test
    public void select() {
        Optional<Customer> byId = customerRepository.findById(1L);
        Customer customer = byId.get();
        System.out.println(customer);
    }
    @Test
    public void insert() {
        Customer customer = new Customer();
        customer.setCustAddress("南环路");
        customer.setCustName("豪哥");
        Customer save = customerRepository.save(customer);
        save.setCustAddress("刘备");
        System.out.println(customer);
    }
    @Test
    public void update() {
        Customer customer = new Customer();
        customer.setCustId(1L);
        customer.setCustAddress("栖霞路");
        customer.setCustName("张飞");
        Customer save = customerRepository.save(customer);
    }
    @Test
    public void remove() {
        Customer customer = new Customer();
        customer.setCustId(1L);
         customerRepository.delete(customer);
    }
}

到此这篇关于SpringData JPA 搭建 xml的 配置方式的文章就介绍到这了,更多相关SpringData JPA 搭建 xml内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 深度优先与广度优先Java实现代码示例

    深度优先与广度优先Java实现代码示例

    这篇文章主要介绍了深度优先与广度优先Java实现代码示例,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • Kotlin 与 Java基本语法对比

    Kotlin 与 Java基本语法对比

    这篇文章主要介绍了Kotlin 与 Java基本语法对比的相关资料,需要的朋友可以参考下
    2017-05-05
  • java递归设置层级菜单的实现

    java递归设置层级菜单的实现

    本文主要介绍了java递归设置层级菜单的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • Java保留两位小数的实现方法

    Java保留两位小数的实现方法

    这篇文章主要介绍了 Java保留两位小数的实现方法的相关资料,需要的朋友可以参考下
    2017-06-06
  • idea配置gradle全过程

    idea配置gradle全过程

    安装Gradle首先需要解压安装包到指定目录,随后配置环境变量GRDLE_HOME和GRADLE_USER_HOME,这里的GRADLE_USER_HOME是指文件下载的路径,安装后,通过命令行输入gradle -v来测试是否安装成功,对于Idea的配置,需要通过File->Setting->Gradle进行
    2024-10-10
  • Spring Security代码实现JWT接口权限授予与校验功能

    Spring Security代码实现JWT接口权限授予与校验功能

    本文给大家介绍Spring Security代码实现JWT接口权限授予与校验功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友参考下吧
    2019-12-12
  • SpringBoot整合Gson 整合Fastjson的实例详解

    SpringBoot整合Gson 整合Fastjson的实例详解

    这篇文章主要介绍了SpringBoot整合Gson 整合Fastjson的实例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • 关于Spring @Bean 相同加载顺序不同结果不同的问题记录

    关于Spring @Bean 相同加载顺序不同结果不同的问题记录

    本文主要探讨了在Spring 5.1.3.RELEASE版本下,当有两个全注解类定义相同类型的Bean时,由于加载顺序不同,最终生成的Bean实例也会不同,文章通过分析ConfigurationClassPostProcessor的执行过程,解释了BeanDefinition的加载和覆盖机制,感兴趣的朋友一起看看吧
    2025-02-02
  • 浅谈MyBatis-plus入门使用

    浅谈MyBatis-plus入门使用

    这几天本人了解到了MyBatis-plus,一个 Mybatis 增强工具包.经过一番研究,发现这玩意真的好用,不用写任何 xml ,内置通用的 Mapper,而且完全是面向对象编程,文档给的示例代码,跟之前用过的 sequelize (Node.js 的 ORM)非常像,因此本人也尝试了一把, 需要的朋友可以参考下
    2021-05-05
  • Maven之pom.xml文件中的Build配置解析

    Maven之pom.xml文件中的Build配置解析

    这篇文章主要介绍了Maven之pom.xml文件中的Build配置解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12

最新评论