SpringBoot持久层支持-springboot中如何运用JPA,简单例子

  1.  JPA概念
    JPA(Java Persistence API)是Sun官方提出的Java持久化规范,用来方便大家操作数据库。
    真正干活的可能是Hibernate,TopLink等等实现了JPA规范的不同厂商,默认是Hibernate。
    本知识演示如何在Springboot中快捷方便地使用JPA。
  2.  创建数据库
    创建数据库,名称是 how2java
    create database how2java;
  3.  创建表
    创建个分类表,字段很简单,就id和name
    use how2java;
    CREATE TABLE category_ (
      id int(11) NOT NULL AUTO_INCREMENT,
      name varchar(30),
      PRIMARY KEY (id)
    ) DEFAULT CHARSET=UTF8;
  4. 准备数据
    插入4条数据
    insert into category_ values(null,'category 1');
    insert into category_ values(null,'category 2');
    insert into category_ values(null,'category 3');
    insert into category_ values(null,'category 4');
  5.  先运行,看到效果,再学习
    老规矩,先下载右上角的可运行项目,配置运行起来,确认可用之后,再学习做了哪些步骤以达到这样的效果。
    测试地址:
    http://127.0.0.1:8080/listCategory
    注: 启动方式是Springboot特有的,直接运行类:com.how2java.springboot.Application 的主方法。
  6.  基于前面的知识点
    本知识点基于错误处理开发,所以最好要把前面的内容学习了哦,不然有些内容恐怕看不懂呢
  7.  application.properties
    新增数据库链接必须的参数
    spring.jpa.properties.hibernate.hbm2ddl.auto=update
    表示会自动更新表结构,所以创建表 这一步其实是可以不需要的~
    spring.mvc.view.prefix=/WEB-INF/jsp/
    spring.mvc.view.suffix=.jsp
    spring.datasource.url=jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8
    spring.datasource.username=root
    spring.datasource.password=admin
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    spring.jpa.properties.hibernate.hbm2ddl.auto=update
  8.  pom.xml
    增加对mysql和jpa的支持
            <!-- mysql-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.21</version>
            </dependency>
     
            <!-- jpa-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
            </dependency> 
    <?xml version="1.0" encoding="UTF-8"?>
    <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/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
     
      <groupId>com.how2java</groupId>
      <artifactId>springboot</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <name>springboot</name>
      <description>springboot</description>
      <packaging>war</packaging>
       
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.5.9.RELEASE</version>
        </parent>
     
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
                <scope>provided</scope>
            </dependency>
            <dependency>
                  <groupId>junit</groupId>
                  <artifactId>junit</artifactId>
                  <version>3.8.1</version>
                  <scope>test</scope>
            </dependency>
            <!-- servlet依赖. -->
            <dependency>
                  <groupId>javax.servlet</groupId>
                  <artifactId>javax.servlet-api</artifactId>
                  <scope>provided</scope>
            </dependency>
                  <dependency>
                         <groupId>javax.servlet</groupId>
                         <artifactId>jstl</artifactId>
                  </dependency>
            <!-- tomcat的支持.-->
            <dependency>
                   <groupId>org.apache.tomcat.embed</groupId>
                   <artifactId>tomcat-embed-jasper</artifactId>
                   <scope>provided</scope>
            </dependency>    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <optional>true</optional> <!-- 这个需要为 true 热部署才有效 -->
            </dependency>
             
            <!-- mysql-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.21</version>
            </dependency>
     
            <!-- jpa-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
            </dependency>       
        </dependencies>
     
        <properties>
            <java.version>1.8</java.version>
        </properties>
     
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
     
    </project>
  9. Category
    增加一个包:com.how2java.springboot.pojo,然后创建实体类Category。
    @Entity 注解表示这是个实体类
    @Table(name = "category_") 表示这个类对应的表名是 category_ ,注意有下划线哦
    @Id 表明主键
    @GeneratedValue(strategy = GenerationType.IDENTITY) 表明自增长方式
    @Column(name = "id") 表明对应的数据库字段名
    @Entity
    @Table(name = "category_")
    public class Category {
     
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name = "id")
        private int id;
         
        @Column(name = "name")
        private String name;
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
         
    }
  10. CategoryDAO
    增加一个包:com.how2java.springboot.dao,然后创建dao接口CategoryDAO,继承了JpaRepository,并且提供泛型<Category,Integer> 表示这个是针对Category类的DAO,Integer表示主键是Integer类型。
    JpaRepository 这个父接口,就提供了CRUD, 分页等等一系列的查询了,直接拿来用,都不需要二次开发的了。
    public interface CategoryDAO extends JpaRepository<Category,Integer>{
     
    }
  11.  CategoryController
    增加一个包:com.how2java.springboot.controller,然后创建CategoryController 类。
    1. 接受listCategory映射
    2. 然后获取所有的分类数据
    3. 接着放如Model中
    4. 跳转到listCategory.jsp中
    @Controller
    public class CategoryController {
        @Autowired CategoryDAO categoryDAO;
         
        @RequestMapping("/listCategory")
        public String listCategory(Model m) throws Exception {
            List<Category> cs=categoryDAO.findAll();
             
            m.addAttribute("cs", cs);
             
            return "listCategory";
        }
         
    }
  12.  listCategory.jsp
    用jstl遍历从CategoryController 传递过来的集合:cs.
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
     
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
       
    <table align='center' border='1' cellspacing='0'>
        <tr>
            <td>id</td>
            <td>name</td>
        </tr>
        <c:forEach items="${cs}" var="c" varStatus="st">
            <tr>
                <td>${c.id}</td>
                <td>${c.name}</td>
                    
            </tr>
        </c:forEach>
    </table>
  13.  重启测试
    因为在pom.xml中增加了jar包的以来,所以仅仅通过Springboot本身的热部署是无法起作用的,得手动重启一下。
    然后访问测试地址:
     http://127.0.0.1:8080/listCategory
    观察到如图所示的效果
  14. 更多关于JPA
    后面有一个JPA的CRUD和分页,可以学习到更多的关于JPA的知识









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值