SpringDataJpa开发环境的搭建以及使用

一、所需工具

  安装jdk、IntelliJ IDEA和mysql数据库。

二、SpringDataJpa快速起步

  开发环境的搭建:

          ①、在IDEA软件上添加依赖包:在http://mvnrepository.com/网址里面搜索spring-data-jpa,选择1.8.0版本。复制依赖包添加到IDEA的pom.xml文件上面。

            

  <dependencies>
    <!--MySQL Driver-->
    <dependency>
       <groupId>mysql</groupId>
       <artifactId>mysql-connector-java</artifactId>
       <version>5.1.38</version>
    </dependency>
    <!--junit-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
    </dependency>

    <!--spring data jpa-->
    <dependency>
      <groupId>org.springframework.data</groupId>
      <artifactId>spring-data-jpa</artifactId>
      <version>1.8.0.RELEASE</version>
    </dependency>

    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-entitymanager</artifactId>
      <version>4.3.6.Final</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>4.3.11.RELEASE</version>
    </dependency>
  </dependencies>

          ②、在resource文件夹下建立一个beans.xml文件。配置内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       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"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       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/context
        http://www.springframework.org/schema/context/spring-context-4.3.xsd

        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx-3.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="062988"/>
        <property name="url" value="jdbc:mysql://localhost/spring_test"/>
    </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.example"/>

        <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.example" entity-manager-factory-ref="entityManagerFactory"/>
    <context:component-scan base-package="com.example"/>
</beans>

  在java文件夹下面建立一个包repository,在该文件夹下建立一个接口EmployeeRepository

/**
 * 通过注解方式实现
 */

@RepositoryDefinition(domainClass = Employee.class,idClass = Integer.class)
public interface EmployeeRepository //extends Repository<Employee,Integer> {
{
    public Employee findByName(String name);
    public Employee findByAge(Integer age);
    public Employee findById(Integer id);

    //where name like ?% and age <?
    public List<Employee> findByNameStartingWithAndAgeLessThan(String name,Integer age);
    //where name like ?% and age <?
    public List<Employee> findByNameEndingWithAndAgeLessThan(String name,Integer age);
    //where name in (?,?....) or age<?
    public List<Employee> findByNameInOrAgeLessThan(List<String> names,Integer age);

    //where name in (?,?....) and age<?
    public List<Employee> findByNameInAndAgeLessThan(List<String> names,Integer age);

    @Query("select o from Employee o where id=(select max(id) from Employee t1)")
    public Employee getEmployeeByMaxId();

    @Query("select o from Employee o where o.name=?1 and o.age=?2")
    public List<Employee> queryParams1(String name,Integer age);

    @Query("select o from Employee o where o.name=:name and o.age=:age")
    public List<Employee> queryParams2(@org.springframework.data.repository.query.Param("name") String name, @org.springframework.data.repository.query.Param("age") Integer age);

    @Query("select o from Employee o where o.name like %?1%")
    public List<Employee> queryLike1( String name);

    @Query("select o from Employee o where o.name like %:name%")
    public List<Employee> queryLike2(@org.springframework.data.repository.query.Param("name")String name);

    @Query(nativeQuery = true,value = "select count(1) from employee")
    public long getCount();

    @Modifying
    @Query("update Employee o set o.age= :age where o.id = :id")
    public void updata(@org.springframework.data.repository.query.Param("id")Integer id, @org.springframework.data.repository.query.Param("age")Integer age);

    @Modifying
    @Query("delete from Employee o where o.id = :id")
    public void delete(@org.springframework.data.repository.query.Param("id")Integer id);

}

/***
 * 通过继承Repository接口实现
 */
//public interface EmployeeRepository extends Repository<Employee,Integer> {
//    public Employee findByName(String name);
//    public Employee findByAge(Integer age);
//    public Employee findById(Integer id);
//}

  在test文件夹下建立一个包repository,在该文件夹下建立一个测试类EmployeeRepositoryTest.java。

public class EmployeeRepositoryTest {

    private ApplicationContext ctx = null;
    private EmployeeRepository employeeRepository = null;

    @Before
    public void setup() {
        ctx = new ClassPathXmlApplicationContext("beans-new.xml");
        employeeRepository = ctx.getBean(EmployeeRepository.class);
        System.out.println("setup");
    }

    @After
    public void tearDown() {
        ctx = null;
        System.out.println("tearDown");
    }

    @Test
    public void testFindByName() {
        Employee employee = employeeRepository.findByName("zhangsan");
        System.out.println("id:"+employee.getId()+",name:"+employee.getName()+",age:"+employee.getAge());
    }
    @Test
    public void testFindByAge() {
        Employee employee = employeeRepository.findByAge(21);
        System.out.println("id:"+employee.getId()+",name:"+employee.getName()+",age:"+employee.getAge());
    }
    @Test
    public void testFindById() {
        Employee employee = employeeRepository.findById(1);
        System.out.println("id:"+employee.getId()+",name:"+employee.getName()+",age:"+employee.getAge());
    }

    @Test
    public void testFindByNameStartingWithAndAgeLessThan() {
        List<Employee> employees = employeeRepository.findByNameStartingWithAndAgeLessThan("test",22);
        for(Employee employee:employees) {

            System.out.println("id:"+employee.getId()+"," +
                    "name:"+employee.getName()+
                    ",age:"+employee.getAge());
        }
    }

    @Test
    public void testFindByNameEndingWithAndAgeLessThan() {
        List<Employee> employees = employeeRepository.findByNameEndingWithAndAgeLessThan("6",23);
        for(Employee employee:employees) {

            System.out.println("id:"+employee.getId()+"," +
                    "name:"+employee.getName()+
                    ",age:"+employee.getAge());
        }
    }

    @Test
    public void testFindByNameInOrAgeLessThan() {
        List<String> names=new ArrayList<String>();
        names.add("test1");
        names.add("test2");
        names.add("test3");
        List<Employee> employees = employeeRepository.findByNameInOrAgeLessThan(names,22);
        for(Employee employee:employees) {
            System.out.println("id:"+employee.getId()+"," +
                    "name:"+employee.getName()+
                    ",age:"+employee.getAge());
        }
    }

    @Test
    public void testFindByNameInAndAgeLessThan() {
        List<String> names=new ArrayList<String>();
        names.add("test1");
        names.add("test2");
        names.add("test3");
        List<Employee> employees = employeeRepository.findByNameInAndAgeLessThan(names,22);
        for(Employee employee:employees) {
            System.out.println("id:"+employee.getId()+"," +
                    "name:"+employee.getName()+
                    ",age:"+employee.getAge());
        }
    }

    @Test
    public void testGetEmployeeByMaxId() {
        Employee employee = employeeRepository.getEmployeeByMaxId();
        System.out.println("id:"+employee.getId()+"," +
                "name:"+employee.getName()+
                ",age:"+employee.getAge());
    }

    @Test
    public void testQueryParams1() {
        List<Employee> employees = employeeRepository.queryParams1("lisi",21);
        for (Employee employee:employees) {
            System.out.println("id:"+employee.getId()+"," +
                    "name:"+employee.getName()+
                    ",age:"+employee.getAge());
        }
    }
    @Test
    public void testQueryParams2() {
        List<Employee> employees = employeeRepository.queryParams2("lisi",21);
        for (Employee employee:employees) {
            System.out.println("id:"+employee.getId()+"," +
                    "name:"+employee.getName()+
                    ",age:"+employee.getAge());
        }
    }

    @Test
    public void testQueryLike1() {
        List<Employee> employees = employeeRepository.queryLike1("test");
        for (Employee employee:employees) {
            System.out.println("id:"+employee.getId()+"," +
                    "name:"+employee.getName()+
                    ",age:"+employee.getAge());
        }
    }

    @Test
    public void testQueryLike2() {
        List<Employee> employees = employeeRepository.queryLike2("test1");
        for (Employee employee:employees) {
            System.out.println("id:"+employee.getId()+"," +
                    "name:"+employee.getName()+
                    ",age:"+employee.getAge());
        }
    }

    @Test
    public void testGetCount() {
        long count = employeeRepository.getCount();
        System.out.println("count:"+count);
    }
}

  点击testFindByName右键运行,控制台将打印出根据名字查询到的数据库信息。

原文地址:https://www.cnblogs.com/chenfeifen/p/9465289.html

时间: 2024-11-08 00:31:57

SpringDataJpa开发环境的搭建以及使用的相关文章

开发环境——基于RHEL 6.8开发环境的搭建

开发环境--基于RHEL 6.8开发环境的搭建 本文讲述了基于RHEL 6.8操作系统搭建开发环境,主要安装了GCC 4.9.3.Qt 5.7.Apache 2.4.25.MySQL 5.6.35.本文同时适用于在Linux主机无互联网环境下搭建开发环境,只需要将所需安装包下载后拷贝到Linux主机即可. 一.RHEL6.8安装 1.RHEL 6.8下载 下载RHEL 6.8安装包:rhel-server-6.8-x86_64-dvd.iso 2.RHEL 6.8安装 安装过程中选择Develo

Android开发环境的搭建

(我果然在作死的道路上越走越远了...) 花了一下午的时间搭建了Anroid开发环境,来说说搭建的过程: 首先,百度! 网上关于Android开发环境搭建的教程有很多,但许多都很杂乱,而且时间久远已经不是很准确了. 浏览了众多教程,贴两个个人觉得较不错的教程地址: 1.http://blog.csdn.net/fl_xin/article/details/39472019 2.http://wenku.baidu.com/link?url=noSH3FDTfaZRe59RTFtuemi-6155

Ubuntu 14.04下java开发环境的搭建--3--Tomcat及MySQL的安装

前面两篇文章,已经说明了JDK和Eclipse 的安装方法,下面简单说一下,Tomcat及MySQL的安装方法. Tomcat的安装. 在合适的地方解压apache-tomcat-6.0.39.tar.gz cd /opt/DevelopTools sudo mkdir server cd server sudo cp /home/home/下载/apache-tomcat-6.0.39.tar.gz /opt/DevelopTools/server sudo tar -zxvf apache-

android笔记1——开发环境的搭建

Long Long ago...已经成为了历史,我还是要说出一个真相:早年前,那时候,android还不被大众所认知的时候,当然开发者也没不像现在那样趋于饱和状态.一位大牛前辈,也是我的学长,那时候我还在上大学.前辈告诫我有时间得去看看android开发,那时候的自己,年轻.冲动.不畏惧,毅然地选择了java服务端开发,放弃了学习android开发. 时隔数年的今天,因为公司业务项目的发展,我还是得去做android开发工作...虽然这几年间断断续续的看了些android开发,但是将成为历史的今

从svn签下代码以及集成开发环境的搭建详细过程

在经过几次的从svn上签下来代码的经历之后,终于总结出了详细的步骤 在upupw/htdocs下建立新的文件夹(此处根据你服务器的根目录而变),此处为bpb1027 ,再右键,选择SVN Checkout 填入内网或外网访问SVN的地址,后面要加个/trunk(主干开发) SVN 主干(trunk).分支(branch ).标记(tag)的不同 trunk:是用来做主方向开发的,一个新模块的开发,这个时候就放在trunk,当模块开发完成后,需要修改,就用branch. branch:是用来做并行

Perl开发环境的搭建--windows

Steps Summary: 1. 下载安装文件 2. 点击文件进行安装 3. 设置环境变量 4. 测试安装是否成功 以在win8上安装Active perl 5.22 为例 Details: 1. 下载安装文件 1) way1: 自己安装编译器,再安装Perl模块,再进行编译,安装. 这种方法的好处是可以编译安装所有的模块 2) way2: 下载已经编译好的perl模块直接进行安装 只能安装定义好的模块.但是编译好的模块一般包含了日常所需的功能.初学者最好使用第二种方法进行安装 以active

Linux平台下Java_Android开发环境的搭建

Linux 平台下安装JDK .Eclipse .Android SDK 说明 开发工具需自行去下载,此处就不再累述 该教程安装环境为 Ubuntu 14.04 x64 其他Linux操作方式基本相同 设计文件修改部分,请先备份要修改的文件,避免操作失误导致不能还原 Liunx 平台下区分大小写,输入文件名或路径建议复制避免不必要的错误 部分操作涉及root权限,为了避免麻烦 请直接使用 root权限操作 开启root权限: 1. sudo su root 2. 后面的提示中输入用户密码 安装

【2014】【辛星】【php】【秋季】【1】php开发环境的搭建

**************************什么是开发环境*********************** 1.我们学习PHP,是使用它来做web用的,通俗理解,就是做网站. 2.网站的运行需要一定的条件,比如它需要服务器.数据库等环境,当然还需要一个操作系统来支撑他们的运行. 3.我们在学习阶段,就需要模拟这个网站的运行环境,但是我们是在开发阶段,也就是所谓的"开发环境". *****************搭建环境前的选择***************************

SIP开发环境的搭建(转)

IP开发环境的搭建(转) 要在windows或者linux平台下开发基于SIP的软电话,需要以下软件 服务器端软件: 注册多个客户端到服务器上,可以进行通话测试 SIP客户端软件:主要用于测试,可以对别人已经完成的客户端进行抓包,以比对自己程序的发包数据 SIP协议栈:基于某个现成的SIP协议栈来开发会加快开发进度 RTP栈:传输语言或者视频数据的协议栈 抓包测试工具:调试网络程序最有效的办法 以下介绍这些软件主要以开源软件为主 一 服务器端软件 1. Asterisk:Linux系统下开源的I