这里只是简要说明如何连接和基本使用mysql,不详细展开。主要是为方便我本人查阅;
表结构
1 2 3 4 5 6 7
| +----------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+----------------+ | id | int | NO | PRI | NULL | auto_increment | | username | varchar(100) | NO | | NULL | | | password | varchar(50) | NO | | NULL | | +----------+--------------+------+-----+---------+----------------+
|
本文采用的是jpa
方式
1.配置
在pem.xml
的dependencies
中加入以下依赖
1 2 3 4 5 6 7 8 9
| <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency>
|
新项目可以在创建时选择两个依赖
2.连接配置
这里用application.yml
方式配置
1 2 3 4 5 6 7 8 9 10 11 12 13
| spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/数据库名称?useSSL=false&requireSSL=false&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC username: root password:
|
3.实体类创建
相当于表数据结构定义,可以拿来自动创建表,更新表以及查询写入数据的载体
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| package com.example.demo.entity;
import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id;
@Entity(name = "user") public class UserEntity { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private Integer id; private String username; private String password;
}
|
4.代理层Dao层创建
代理层、Dao层、Repository都大致正确,总之是为实体类添加基本实现方法,如:
- find
- findAll
- getByEmail 。。。。
相当于php mvc框架的模型,具体数据增删改查实现
1 2 3 4 5 6 7 8 9 10 11 12 13
| package com.example.demo.dao;
import com.example.demo.entity.UserEntity; import org.springframework.data.repository.CrudRepository; import org.springframework.stereotype.Repository;
@Repository
public interface UserDao extends CrudRepository<UserEntity, Integer> { }
|
5.数据库CRUD操作
非常重要的!!! 声明模型(Dao层)需要这个注解!!!
1 2
| @Autowired private UserDao userDao;
|
查询单条
关于查询的涉及会比较多,以后单独开一篇来描述。主要我当前还没学到那一步
查询根据id
1 2
| Optional<UserEntity> Option = userDao.findById(10); return Option.get();
|
查询多条
返回为对象Iterable
需要自己转换成List
1 2 3 4
| Iterable<UserEntity> result = userDao.findAll(); List<UserEntity> list = new ArrayList<>(); result.forEach(row -> {list.add(row);}); return list;
|
插入数据
1 2 3 4
| UserEntity user = new UserEntity(); user.setUsername("yxb"); user.setPassword("hsh"); userDao.save(user);
|
更新数据
1 2 3 4 5 6 7 8 9 10 11 12
| // 方法1:同插入数据一样,但是指定id,会从数据库查询到记录并修改, 找不到则新增 UserEntity user = new UserEntity(); user.setId(3); user.setUsername("yxb"); user.setPassword("hsh"); userDao.save(user);
// 方法2 Optional<UserEntity> result = userDao.findById(id); UserEntity test = result.get(); test.setUsername(name); userDao.save(test);
|
删除数据
1 2 3 4 5 6 7 8 9 10 11
| Optional<UserEntity> result = userDao.findById(id); userDao.delete(result.get());
UserEntity test = new UserEntity(); test.setId(id); userDao.delete(test);
userDao.deleteById(id);
|