Spring Boot Mysql 数据库操作示例

时间:2022-05-20 22:27:42

本文默认你的开发环境.数据库已经安装好

想用使用数据库.我们需要现在pom文件中添加相应的依赖

pom.xml

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<?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.imgod</groupId>
  <artifactId>testjpa</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
 
  <name>TestJpa</name>
  <description>Demo project for Spring Boot</description>
 
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.4.2.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-data-jpa</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-tomcat</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    <!-- 添加Hibernate依赖 -->
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-core</artifactId>
    </dependency>
  </dependencies>
 
  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>
 
 
</project>

我们的配置文件进行数据库的配置

application.properties:

?
1
2
3
4
5
6
7
8
9
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test
spring.datasource.username=root
spring.datasource.password=imgod1
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.max-idle=10
spring.datasource.max-wait=10000
spring.datasource.min-idle=5
spring.datasource.initial-size=5
spring.jpa.properties.hibernate.hbm2ddl.auto=update

前面配置的是数据库信息,最后一行配置的是.如果我们定义的实体在数据库中没有对应的表的话.会帮我们自动创建

我们的实体类型

User.Java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package com.imgod.bean;
 
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
 
@Entity
@Table(name = "users")
public class User {
  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private int id;
  @NotNull
  private String email;
  @NotNull
  private String name;
 
  public int getId() {
    return id;
  }
 
  public void setId(int id) {
    this.id = id;
  }
 
  public String getEmail() {
    return email;
  }
 
  public void setEmail(String email) {
    this.email = email;
  }
 
  public String getName() {
    return name;
  }
 
  public void setName(String name) {
    this.name = name;
  }
 
}

对应数据库中的user表,没有的话会自动创建

想对数据库进行操作,我们需要创建一个接口继承CrudRepository

UserDao.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package com.imgod.dao;
 
import org.springframework.data.domain.Pageable;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
 
import com.imgod.bean.User;
import java.lang.String;
import java.util.List;
 
@Transactional
@Repository
public interface UserDao extends CrudRepository<User, Integer> {
  //jpa 方法名就是查询语句,只要规法写方法名一切就都可以完成(当然.有时候会造成方法名又臭又长)
  User findByEmail(String email);//根据邮箱查询
  List<User> findByName(String name);//根据用户名查询
   
  //select * from test.users where email='imgod@qq.com' and name='imgod';
  List<User> findByNameAndEmail(String name,String email);//根据用户名和邮箱进行查询
   
  //select * from test.users where email='imgod@qq.com' and name='imgod4444' order by id desc;
  List<User> findByNameAndEmailOrderByIdDesc(String name,String email);//根据用户名和邮箱进行查询,排序
   
  //select * from test.users where email='imgod@qq.com' and name='imgod4444' order by id desc limit 2;
  List<User> findTop2ByNameAndEmailOrderByIdDesc(String name,String email);//根据用户名和邮箱进行查询,排序,前两个
 
  //根据邮箱进行分页查询
  List<User> findByEmail(String email,Pageable pageable);//根据用户名和邮箱进行查询
}

实现CrudRepository我们就可以对数据库进行一些基础操作了

如果我们想要实现更多的操作.需要自己按照严格的命名规则为方法定义方法名

下面就是我们重要的控制器的实现了:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
package com.imgod.controller;
 
import java.util.List;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
import com.imgod.bean.User;
import com.imgod.dao.UserDao;
 
@RestController
public class UserController {
  @Autowired
  private UserDao userDao;
 
  /**
   * 根据邮件去查找
   *
   * @param email
   * @return
   */
  @RequestMapping(value = "/findUserByEmail")
  public Object getUserByEmail(String email) {
    System.out.println("email:" + email);
    User user = userDao.findByEmail(email);
    if (null == user) {
      return "暂无数据";
    } else {
      return user;
    }
 
  }
 
  /**
   * 获取所有的用户信息
   *
   * @return
   */
  @RequestMapping(value = "/getall")
  public Object getAllUser() {
    List<User> list = (List<User>) userDao.findAll();
    if (null == list || list.size() == 0) {
      return "暂无数据";
    } else {
      return list;
    }
 
  }
 
  /**
   * 删除指定id用户
   *
   * @param id
   * @return
   */
  @RequestMapping(value = "/deleteUser")
  public Object deleteuUser(int id) {
    User user = userDao.findOne(id);
    if (null == user) {
      return "删除用户失败:" + id + "没找到该用户";
    } else {
      userDao.delete(id);
      return "删除用户成功:" + id;
    }
 
  }
 
  /**
   * 添加用户
   *
   * @param id
   * @param email
   * @param name
   * @return
   */
  @RequestMapping(value = "/adduser")
  public Object addUser(String id, String email, String name) {
    System.out.println("email:" + email);
 
    int tempId = Integer.parseInt(id);
    System.out.println("tempId:" + tempId + "email:" + email + "name:" + name);
 
    User tempUser = userDao.findOne(tempId);
    if (null == tempUser) {
      tempUser = new User();
      tempUser.setId(tempId);
    }
    tempUser.setEmail(email);
    tempUser.setName(name);
    User resultUser = userDao.save(tempUser);
    if (null == resultUser) {
      return "新增用户失败";
    } else {
      return "新增用户:" + resultUser.getName();
    }
 
  }
 
  // 条件查询
 
  /**
   * 获取姓名和邮箱是指定内容的用户
   *
   * @return
   */
  @RequestMapping(value = "/getUser1")
  public Object getUser(String email, String name) {
    List<User> userList = userDao.findByNameAndEmail(name, email);
    if (null != userList && userList.size() != 0) {
      return userList;
    } else {
      return "没找到符合要求的用户";
    }
 
  }
 
  /**
   * 获取姓名和邮箱是指定内容的用户并排序
   *
   * @return
   */
  @RequestMapping(value = "/getUser2")
  public Object getUser2(String email, String name) {
    List<User> userList = userDao.findByNameAndEmailOrderByIdDesc(name, email);
    if (null != userList && userList.size() != 0) {
      return userList;
    } else {
      return "没找到符合要求的用户";
    }
 
  }
 
  /**
   * 获取姓名和邮箱是指定内容的用户并排序,前两个
   *
   * @return
   */
  @RequestMapping(value = "/getUser3")
  public Object getUser3(String email, String name) {
    List<User> userList = userDao.findTop2ByNameAndEmailOrderByIdDesc(name, email);
    if (null != userList && userList.size() != 0) {
      return userList;
    } else {
      return "没找到符合要求的用户";
    }
 
  }
 
  /**
   * 分页获取邮箱为指定内容的数据
   *
   * @return
   */
  @RequestMapping(value = "/getUser4")
  public Object getUser4(String email, int page) {
    // page 属于下标 从0开始 0代表是第一页
    List<User> userList = userDao.findByEmail(email, new PageRequest(page, 2));
    if (null != userList && userList.size() != 0) {
      return userList;
    } else {
      return "没找到符合要求的用户";
    }
 
  }
}

如此我们就完成了对数据库的操作:

Spring Boot Mysql 数据库操作示例

Spring Boot Mysql 数据库操作示例

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:http://blog.csdn.net/u010399316/article/details/53420532