打开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><!– 如果没有该项配置,可能devtools不会起作用,即应用不会restart –>-->
<!--</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)对应数据库主键自动增长。