spring data jpa+springboot项目环境搭建及简单样例

打开idea,创建项目

  • File->New->Project
    在这里插入图片描述

  • Next
    在这里插入图片描述

  • 一路next,最终finish即可。(sql中可以有jpa选择如下)

  • 在这里插入图片描述
    我这里是使用稍微完整一点的依赖文件,直接覆盖pom.xml中的dependency即可。

覆盖的pom.xml文件如下

<?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.apple.demo</groupId>
    <artifactId>apple</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>

    <name>apple</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.5.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
            <!-- optional=true,依赖不会传递,该项目依赖devtools;之后依赖myboot项目的项目如果想要使用devtools,需要重新引入 -->
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-httpclient</groupId>
            <artifactId>commons-httpclient</artifactId>
            <version>3.1</version>
            <scope>compile</scope>
        </dependency>

        <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>RELEASE</version>
        <scope>compile</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.vaadin.external.google/android-json -->
        <dependency>
            <groupId>com.vaadin.external.google</groupId>
            <artifactId>android-json</artifactId>
            <version>0.0.20131108.vaadin1</version>
            <scope>compile</scope>
        </dependency>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
        </dependency>

        <dependency>
            <groupId>net.sf.json-lib</groupId>
            <artifactId>json-lib</artifactId>
            <version>2.4</version>
            <!-- 必须加jdk的版本号 -->
            <classifier>jdk15</classifier>
        </dependency>

        <!--<dependency>-->
            <!--<groupId>com.alibaba</groupId>-->
            <!--<artifactId>fastjson</artifactId>-->
        <!--</dependency>-->

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>compile</scope>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>


    <build>
        <finalName>data</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <!--<configuration>-->
                    <!--<fork>true</fork>&lt;!&ndash; 如果没有该项配置,可能devtools不会起作用,即应用不会restart &ndash;&gt;-->
                <!--</configuration>-->
            </plugin>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>


</project>

另外在resource中建立两个文件,用于配置基本的服务器和数据库连接信息。

application.yml

spring:
  profiles:
    active: prod
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/test?useSSL=false
    username: root
    password: 123456
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true

application-prod.xml

server:
  port: 8088
  servlet:
    context-path: /apple

写控制器和接口以及实例(要和数据库对应,注解可以百度),进行简单测试

实例声明:

package com.apple.demo.entity;

import javax.persistence.*;

@Entity
public class Users {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer uid;
    private String username;
    private String password;

    public Integer getUid() {
        return uid;
    }

    public void setUid(Integer uid) {
        this.uid = uid;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

说明:直接可以返回json字符串,因为在包里面引入了spring-boot-starter-web依赖。。

测试

添加一个用户测试。

直接在控制器中调用添加方法即可,不需要在接口中声明。

@PostMapping(value = "/add_one_user")  //添加一个user
    public Integer add_one_boy(
            @RequestParam("username") String username,
            @RequestParam("password") String password,
            Users users
    ){
        try{
            usersService.save(users);
        }catch(Exception e){
            System.out.println("添加user异常:"+e.getMessage());
            return 0;
        }
        return 1;
    }

测试结果:
在这里插入图片描述

数据库查看
在这里插入图片描述

查看用户测试

映射
    // 返回某一个用户,根据用户名称 返回第一个
    @GetMapping(value = "/get_user") //通过by名称返回列表  查找名称为xx的数据列表
    public Users get_user(@Param("username") String username){
        return usersService.findByUsername(username);
    }
接口
    Users findByUsername(String username);
结果

在这里插入图片描述

更新用户测试

映射
    // 根据用户id,更新用户名
    @GetMapping(value = "/updateUser")
    public Integer updateUser(
            @RequestParam("id") Integer id,
            @RequestParam("username") String username
    ){
        return usersService.update_user(id,username);
    }
接口实现
    @Modifying
    @Query("UPDATE Users u SET u.username = :username where u.id = :id")
    @Transactional
    Integer update_user(@Param("id") Integer id, @Param("username") String username);
测试结果

在这里插入图片描述
在这里插入图片描述

最后再记录一下代码结果以及代码。

结构

在这里插入图片描述

UsersController

package com.apple.demo.controller;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.apple.demo.entity.Users;
import com.apple.demo.service.UsersService;
import com.apple.demo.entity.Users;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.repository.query.Param;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@RestController
@RequestMapping("/user/")
public class UsersController {

    @Autowired
    private UsersService usersService;

    // 返回某一个用户,根据用户名称 返回第一个
    @GetMapping(value = "/get_user") //通过by名称返回列表  查找名称为xx的数据列表
    public Users get_user(@Param("username") String username){
        return usersService.findByUsername(username);
    }

    // 通过用户名,返回相同用户名的所有用户列表
    @GetMapping(value = "/get_user_list")
    public List<Users> get_user_list(@Param("username") String username){
        return usersService.get_by_username(username);
    }

    /*
    反回所有用户列表
     */
    @GetMapping(value = "/list")
    public List<Map> list(){
        return usersService.getAllUser();
    }

    // 根据用户id,更新用户名
    @GetMapping(value = "/updateUser")
    public Integer updateUser(
            @RequestParam("id") Integer id,
            @RequestParam("username") String username
    ){
        return usersService.update_user(id,username);
    }

    @GetMapping(value = "/del_user")  //删除一个用户
    public Integer del_boy(
            @RequestParam("id") Integer id,
            Users users
    ){
        // Boy b2 = (Boy) boyRespository.findById(id);
        usersService.delete(users);
        return 1;
    }

    @PostMapping(value = "/add_one_user")  //添加一个user
    public Integer add_one_boy(
            @RequestParam("username") String username,
            @RequestParam("password") String password,
            Users users
    ){
        try{
            usersService.save(users);
        }catch(Exception e){
            System.out.println("添加user异常:"+e.getMessage());
            return 0;
        }
        return 1;
    }
}

UserService

package com.apple.demo.service;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import com.apple.demo.entity.Users;
import org.springframework.data.repository.query.Param;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.Map;

public interface UsersService extends JpaRepository<Users,Integer> {
    @Query(value = "select * from users",nativeQuery = true)
    public List<Map> getAllUser();

    Users findByUsername(String username);

    @Query("select b from Users b where b.username = ?1")
    public List<Users> get_by_username(String username);

    @Modifying
    @Query("UPDATE Users u SET u.username = :username where u.id = :id")
    @Transactional
    Integer update_user(@Param("id") Integer id, @Param("username") String username);
}

Uses实体类

package com.apple.demo.entity;

import javax.persistence.*;

@Entity
public class Users {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer uid;
    private String username;
    private String password;

    public Integer getUid() {
        return uid;
    }

    public void setUid(Integer uid) {
        this.uid = uid;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

注意接口中写@Query如果是nativeQuery(原生查询),那么查找的表是表名,而不是实体类类名。另外要注意返回结果用Map封装一下。 @GeneratedValue(strategy = GenerationType.IDENTITY)对应数据库主键自动增长。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值