SpringBoot集成JPA数据库层开发

前言

SpringBoot数据库开发可以有两种方式,一种是集成MyBatis,另一种是集成JPA。这里选择了集成JPA来进行数据库层开发。

环境:
IDEA:2018.3.3
Java:1.8

这里假设你已经配置好Java与IDEA,并使用Maven构建了一个新的SpringBoot项目,该项目继承了Spring-boot-starter项目。如果没有可以参看文章:新建SpringBoot项目配置基本的Web项目

介绍

JPA是Sun官方提出的Java持久化规范,其主要作用是简化持久化开发工作和整合ORM技术,结束各大ORM框架各自为营的局面。

JPA是一个规范,是一组接口。Hibernate是JPA的实现技术之一。所以JPA和Hibernate一起使用(当然也可以选择其他实现技术)。

Spring Data JPA 在JPA的基础上进一步进行了封装,它封装了不同ORM框架间的代码差异性,同时也简化了代码,但是它仍是一组接口,也需要与Hibernate一起使用。

开发实例

在pom.xml文件中加入

	<dependencies>
		<!--Spring Data JPA -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
		<!--MySQL JDBC -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
	</dependencies>

在application.properties文件中加入

spring.datasource.url=jdbc:mysql://localhost:3306/its?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
Hibernate逆向工程

点击右侧“DataBase”,新建数据库连接,如下图:
在这里插入图片描述
输入连接名、域名、数据库名、用户名、密码,如下:
在这里插入图片描述
点击图中“MySQL”,配置MySQL驱动包,如下图。jar包可以一键下载。配置完成后回到上图点击“Test Connection”,出现“Successful”后说明配置成功。
在这里插入图片描述
右击,选择"Scripted Extensions"->“Go to Scripts Directory”,打开pojo类模板,修改模板
在这里插入图片描述
修改模板的内容

……
packageName = "com.example.platform.domain;"           //修改包名
……

……
def generate(out, className, fields) {
  out.println "package $packageName"
  out.println "import javax.persistence.*;"
  out.println ""
  out.println ""
  out.println "@Entity"      //在类名前加注解
  out.println "public class $className {"
  out.println ""
  fields.each() {
    if (it.annos != "") out.println "  ${it.annos}"
    if (it.name == "id") {    //对于主键,前面加上主键以及自增的注解
      out.println "@Id"
      out.println "@GeneratedValue(strategy = GenerationType.IDENTITY)"
    }
    out.println "  private ${it.type} ${it.name};"
  }
  out.println ""
  fields.each() {
    out.println ""
    out.println "  public ${it.type} get${it.name.capitalize()}() {"
    out.println "    return ${it.name};"
    out.println "  }"
    out.println ""
    out.println "  public void set${it.name.capitalize()}(${it.type} ${it.name}) {"
    out.println "    this.${it.name} = ${it.name};"
    out.println "  }"
    out.println ""
  }
  out.println "}"
}
……

选择所有的表,选择"Scripted Extensions"->“Generate POJOs.groovy”
在这里插入图片描述
选择好pojo类的包,点击OK。那么所有的POJO类就已经生成好了。
在这里插入图片描述

DAO接口

@Repository:表明该类是一个DAO类

import com.example.platform.domain.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface UserDao extends JpaRepository<User, Long> {
}
Service类

@Service:表明该类是一个Service类
@Resource:自动注入。没有用@Autowired的原因是这个注解需要构造器,因为没有写所有就用了Java中自带的注解。

import com.example.platform.domain.User;
import com.example.platform.repository.UserDao;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

@Service
public class UserService {

    @Resource
    private UserDao userDao;

    public String Login(User user){
        List<User> userList = userDao.findAll();
        boolean flag = false;
        for(User item : userList){
            if(item.getAccount().equals(user.getAccount()) && item.getPassword().equals(user.getPassword()))
                flag = true;
        }
        if(flag) return "success";
        else return "fail";
    }
}

Controller类

@Controller:表明该类是一个Controller类
@RequestMapping:设置请求路径,写在类上对该类的所有方法都适用。比如login的请求路径是/user/login
@ResponseBody:返回时自动转换为json格式。除字符串外。

import com.example.platform.domain.User;
import com.example.platform.service.UserService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;

@Controller
@RequestMapping(value = "/user")
public class UserController {
    @Resource
    private UserService userService;

    @ResponseBody
    @RequestMapping(value = "/login", method = RequestMethod.POST)
    public String Login(String account, String password){
        User user = new User(account, password);
        return userService.Login(user);
    }
}

测试

点击"Tools"->“HTTP Client”->“Test RESTful Web Service”
在这里插入图片描述
输入Path和Request Parameters后,点击左边绿色箭头运行。
在这里插入图片描述
运行成功。那么简单的数据库层开发就搞定了。
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值