您的位置:首页 > 编程语言 > Java开发

深入学习spring-boot系列(二)--使用spring-data-jpa

2016-11-24 15:14 1131 查看
本文使用我之前的博文项目作为原型,改成spring-boot项目,并使用spring-data-jpa替代mybatis作为dao实现。 

原项目参考,Spring+SpringMVC+MyBatis+Maven框架整合:http://jisonami.iteye.com/blog/2295345 

由于spring-boot的jar项目暂时不支持jsp,因此本项目依旧是一个war项目,下一篇文章会介绍使用thymeleaf模板替换jsp页面后的jar项目。 

本文主要记录以下几点: 

一、spring-boot约定的目录结构 

二、Maven需要引入的jar 

三、application.properties的相关配置 

四、spring-data-jpa的简单使用 

一、spring-boot约定的目录结构 


 

对于这个目录结构而言,Application.java是spring的Java配置类,里面包含spring-boot应用的main()方法,在spring-boot的jar项目中会执行该方法 

spring目前支持三种元数据的配置,即xml、Java注解、Java配置类,而spring-boot推荐使用Java配置类来完成元数据的配置。 

Jisonami2目前的目录结构是这样的: 


 

Jisonami2Application.java是spring-boot的入口类,包含配置信息和main()方法 

Java代码  


@SpringBootApplication  

@Controller  

public class Jisonami2Application {  

      

    @RequestMapping("/")  

    public String index(){  

        return "../../index";  

    }  

      

    public static void main(String[] args) {  

        SpringApplication.run(Jisonami2Application.class, args);  

    }  

}  

@SpringBootApplication其实是以下三个注解的合并,取其默认值时直接使用@SpringBootApplication 

Java代码  


@Configuration  

@EnableAutoConfiguration  

@ComponentScan  

目前本项目是war项目,所以Jisonami2Application需要继承SpringBootServletInitializer类,并实现如下方法 

Java代码  


@Override  

protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {  

    return builder.sources(Jisonami2Application.class);  

}  

二、Maven需要引入的jar 

在maven中有两种方式可以配置成spring-boot项目,本文使用最简单的直接继承spring-boot-starter-parent成为spring-boot项目。 

通过在spring-boot项目的pom.xml中引入一些spring-boot-starter的依赖,可以简化项目的配置。 

maven的pom.xml如下: 

Xml代码  


<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  

    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  

    <modelVersion>4.0.0</modelVersion>  

    <groupId>org.jisonami</groupId>  

    <artifactId>Jisonami2</artifactId>  

    <packaging>war</packaging>  

    <version>0.1.1</version>  

    <name>Jisonami Maven Webapp</name>  

    <url>http://maven.apache.org</url>  

  

    <!-- 直接继承spring-boot-starter-parent成为spring-boot项目 -->  

    <parent>  

        <groupId>org.springframework.boot</groupId>  

        <artifactId>spring-boot-starter-parent</artifactId>  

        <version>1.3.3.RELEASE</version>  

    </parent>  

  

    <properties>  

        <!-- 使用了lambda表达式,覆盖默认的java版本,默认为1.6 -->  

        <java.version>1.8</java.version>  

        <!-- 之前用hibernate5.1.0.Final生成的表,使用spring-boot-starter-data-jpa默认引入的hibernate4.3.11会报sql错 -->  

        <hibernate.version>5.1.0.Final</hibernate.version>  

        <oracle14.version>10.2.0.4.0</oracle14.version>  

        <taglibs.standard.version>1.1.2</taglibs.standard.version>  

    </properties>  

  

    <dependencies>  

        <dependency>  

            <groupId>junit</groupId>  

            <artifactId>junit</artifactId>  

            <scope>test</scope>  

        </dependency>  

        <dependency>  

            <groupId>org.springframework.boot</groupId>  

            <artifactId>spring-boot-starter-web</artifactId>  

        </dependency>  

        <dependency>  

            <groupId>org.springframework.boot</groupId>  

            <artifactId>spring-boot-starter-data-jpa</artifactId>  

        </dependency>  

        <!-- maven打war包需要,spring boot的jsp项目必须是war项目,jar项目不支持jsp -->  

        <dependency>  

            <groupId>org.springframework.boot</groupId>  

            <artifactId>spring-boot-starter-tomcat</artifactId>  

            <scope>provided</scope>  

        </dependency>  

        <dependency>  

            <groupId>org.apache.tomcat.embed</groupId>  

            <artifactId>tomcat-embed-jasper</artifactId>  

            <scope>provided</scope>  

        </dependency>  

  

        <!-- 引入oracle数据库jdbc驱动包 -->  

        <dependency>  

            <groupId>com.oracle</groupId>  

            <artifactId>ojdbc14</artifactId>  

            <version>${oracle14.version}</version>  

        </dependency>  

        <dependency>  

            <groupId>mysql</groupId>  

            <artifactId>mysql-connector-java</artifactId>  

        </dependency>  

  

        <!-- jstl依赖包 -->  

        <dependency>  

            <groupId>javax.servlet</groupId>  

            <artifactId>jstl</artifactId>  

        </dependency>  

        <dependency>  

            <groupId>taglibs</groupId>  

            <artifactId>standard</artifactId>  

            <version>${taglibs.standard.version}</version>  

        </dependency>  

  

    </dependencies>  

  

    <build>  

        <plugins>  

            <!-- spring boot项目编译插件 -->  

            <plugin>  

                <groupId>org.springframework.boot</groupId>  

                <artifactId>spring-boot-maven-plugin</artifactId>  

            </plugin>  

        </plugins>  

    </build>  

  

</project>  

三、application.properties的相关配置 

application.properties是spring-boot项目的配置文件,spring-boot内置了很多默认配置信息,在application.properties文件中我们可以覆盖spring-boot的默认配置信息 

目前本项目只需要配置spring-mvc的jsp跳转的前缀和后缀 

Java代码  


#指定项目上下文路径  

#server.context-path=/Jisonami2  

#配置jsp视图的前缀和后缀  

spring.mvc.view.prefix=/WEB-INF/content/  

spring.mvc.view.suffix=.jsp  

四、spring-data-jpa的简单使用 

1、首先需要配置数据源 

在Jisonami2Application.java中加入如下方法,配置数据源 

Java代码  


@Bean  

@ConfigurationProperties(locations="classpath:DBConfig.properties", prefix="datasource")  

public DataSource dataSource(){  

    return DataSourceBuilder.create().build();  

}  

DataSourceBuilder源码里面默认配置如下,即有4种默认数据源可用:(上面在DBConfig.properties配置的是dbcp的数据源) 

Java代码  


private static final String[] DATA_SOURCE_TYPE_NAMES = { "org.apache.tomcat.jdbc.pool.DataSource", "com.zaxxer.hikari.HikariDataSource", "org.apache.commons.dbcp.BasicDataSource", "org.apache.commons.dbcp2.BasicDataSource" };  

DBConfig.properties的配置: 

Java代码  


datasource.driverClassName=oracle.jdbc.driver.OracleDriver  

datasource.url=jdbc:oracle:thin:@192.168.75.130:1521:orcl  

datasource.username=jison  

datasource.password=jison  

2、以UserRepository为例,简单介绍spring-data-jpa的使用 

UserRepository的代码如下: 

Java代码  


public interface UserRepository extends CrudRepository<User, String>{  

      

    public User findByName(String name);  

      

    public User findByNameAndPassword(String name, String password);  

      

}  

UserRepository继承了CrudRepository接口与,CrudRepository接口里面定义了一些常用的方法,去掉注释,看其源码定义了如下方法: 

Java代码  


<S extends T> S save(S entity);  

  

    <S extends T> Iterable<S> save(Iterable<S> entities);  

  

    T findOne(ID id);  

  

    boolean exists(ID id);  

  

    Iterable<T> findAll();  

  

    Iterable<T> findAll(Iterable<ID> ids);  

  

    long count();  

  

    void delete(ID id);  

  

    void delete(T entity);  

  

    void delete(Iterable<? extends T> entities);  

  

    void deleteAll();  

好了,spring-data-jpa自动帮我们生成这些方法的实现的,我们只需要在service里调用对应方法实现对应的逻辑就行了。 

spring-data-jpa具体用法自行google 

spring-data-jpa官方sample工程:https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-data-jpa 

至此,本项目就搭建完成了,更详细的代码参考我的github项目Jisonami的0.1.1版本: 
https://github.com/jisonami/Jisonami2/tree/0.1.1

查看图片附件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  springboot