官方教程和 Demo:https://spring.io/guides/gs/accessing-data-mysql/

pom.xml 增加依赖:

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-data-jpa</artifactId>
  4. </dependency>
  5. <dependency>
  6. <groupId>mysql</groupId>
  7. <artifactId>mysql-connector-java</artifactId>
  8. <scope>runtime</scope>
  9. </dependency>

初始化数据库:

  1. create database db_example;
  2. create user 'springuser'@'%' identified by 'ThePassword';
  3. grant all on db_example.* to 'springuser'@'%';

application.properties:

  1. # 自动建表
  2. spring.jpa.hibernate.ddl-auto=update
  3. spring.datasource.url=jdbc:mysql://192.168.198.155:30306/db_example
  4. spring.datasource.username=springuser
  5. spring.datasource.password=ThePassword
  6. spring.datasource.driver-class-name =com.mysql.jdbc.Driver
  7. #spring.jpa.show-sql: true

直接使用 connection:

  1. @Controller
  2. public class HelloControl {
  3. @Autowired private DataSource dataSource;
  4. @RequestMapping("/")
  5. @ResponseBody
  6. public String hello() throws Exception {
  7. Connection connection = dataSource.getConnection();
  8. ResultSet rs = connection.getMetaData().getTables(null, null, null, new String[] {"TABLE"});
  9. List<String> tables = new LinkedList<>();
  10. while (rs.next()) {
  11. tables.add(rs.getString("TABLE_NAME"));
  12. }
  13. return tables.toString();
  14. }
  15. }

使用 jpa 做对象映射:

UserRepository.java

  1. package com.example.accessingdatamysql;
  2. import org.springframework.data.repository.CrudRepository;
  3. import com.example.accessingdatamysql.User;
  4. public interface UserRepository extends CrudRepository<User, Integer> {
  5. }

User.java

  1. package com.example.accessingdatamysql;
  2. import javax.persistence.Entity;
  3. import javax.persistence.GeneratedValue;
  4. import javax.persistence.GenerationType;
  5. import javax.persistence.Id;
  6. @Entity // This tells Hibernate to make a table out of this class
  7. public class User {
  8. @Id
  9. @GeneratedValue(strategy=GenerationType.AUTO)
  10. private Integer id;
  11. private String name;
  12. private String email;
  13. public Integer getId() {
  14. return id;
  15. }
  16. public void setId(Integer id) {
  17. this.id = id;
  18. }
  19. public String getName() {
  20. return name;
  21. }
  22. public void setName(String name) {
  23. this.name = name;
  24. }
  25. public String getEmail() {
  26. return email;
  27. }
  28. public void setEmail(String email) {
  29. this.email = email;
  30. }
  31. }

MainController.java:

  1. @Controller
  2. @RequestMapping(path = "/demo")
  3. public class MainController {
  4. @Autowired
  5. private UserRepository userRepository;
  6. @PostMapping(path = "/add")
  7. public @ResponseBody
  8. String addNewUser(@RequestParam String name
  9. , @RequestParam String email) {
  10. User n = new User();
  11. n.setName(name);
  12. n.setEmail(email);
  13. userRepository.save(n);
  14. return "Saved";
  15. }
  16. @GetMapping(path = "/all")
  17. public @ResponseBody
  18. Iterable<User> getAllUsers() {
  19. return userRepository.findAll();
  20. }
  21. }

访问:

curl -XPOST "http://localhost:8080/demo/add?name=zlj&email=zlj@qq.com"
curl http://localhost:8080/demo/all