开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第17天,点击查看活动详情
前端目前已经做好了注册和登录的逻辑,需要对接后端接口。这个时候就需要用到我们的数据库了,然而我发现我之前没有用springboot操作过mysql数据库。这里记录下对接的全流程。
一、创建数据库
我这里已经创建好了。 匹配系统的数据库设计 - 掘金 (juejin.cn)
二、springboot对接全流程
第一步:导入依赖
在项目目录下的pom.xml导入依赖jdbc和mysql。网络上有很多方法,我这里记录下我自己最好用的。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
第二步:配置数据库信息
我这里是application.properties,配置结构如下。
spring.datasource.url=jdbc:mysql://你的数据库ip:3306/数据库名字
spring.datasource.username=你的用户名
spring.datasource.password=你的密码
第三步:创建UserEntity实体类,承接数据库user表
public class UserEntity {
private String email;
private String username;
private String password;
private Date register_time;
private boolean is_login;
private int score;
}
第四步:Dao层创建UserDao接口和其实现类UserDaoImpl
UserDao接口
import com.example.api.Entity.UserEntity;
import java.util.List;
public interface UserDao {//注意jdbc连接不像springdata操作数据库需要继承JpaRepository
public int add(UserEntity user);
public int delete(String email);
public int update(String email,UserEntity user);
public UserEntity queryByEmail(String email);
public List<UserEntity> queryAll();
}
UserDaoImpl实现方法
import com.example.api.Entity.UserEntity;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;
import javax.annotation.Resource;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
@Repository//Repository创建对象
public class UserDaoImpl implements UserDao {
@Resource
private JdbcTemplate jdbcTemplate;//创建jdbcTemplate对象操作数据库
@Override
public int add(UserEntity user) {
String sql = "insert into user values(?,?,?)";
//count:数据条数
int count = jdbcTemplate.update(sql,user.getEmail(),user.getUsername(),user.getPassword());
if(count>0) {
System.out.println("添加成功"+"\t"+user);
}else {
System.out.println("添加失败"+"\t"+user);
}
return count;
}
@Override
public List<UserEntity> queryAll() {
String sql = "select * from user";
RowMapper<UserEntity> rowMapper = new BeanPropertyRowMapper<UserEntity>(UserEntity.class);
List<UserEntity> userlist = jdbcTemplate.query(sql, rowMapper);
return userlist;
}
}
第五步:Service层创建UserService接口和其实现类UserServiceImpl
UserService接口
import com.example.api.Entity.UserEntity;
import java.util.List;
public interface UserService {
public int add(UserEntity user);
public int delete(String email);
public int update(String email,UserEntity user);
public UserEntity queryByEmail(String email);
public List<UserEntity> queryAll();
}
UserServiceImpl实现方法
import com.example.api.Dao.UserDao;
import com.example.api.Entity.UserEntity;
import com.example.api.Service.UserService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class UserServiceImpl implements UserService {
@Resource
UserDao userDao;
@Override
public int add(UserEntity user) {
return userDao.add(user);
}
@Override
public List<UserEntity> queryAll() {
return userDao.queryAll();//这里的getall使我们自己在dao层中写的方法,不像springdata那样使用的是框架的findAll方法。
}
}
第六步:Controller层实现UserController方法
通过Controller进行访问。
import com.example.api.Entity.UserEntity;
import com.example.api.Service.UserService;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
@RestController
public class UserController {
@Resource
private UserService userService;
@CrossOrigin
@GetMapping("/getuserlist")
public List<UserEntity> getuserlist(){
List<UserEntity> list = userService.queryAll();
System.out.println(list);
return list;//页面显示结果:[ { "age":12, "birthday":"2019-10-08 00:00:00", "userId":1, "username":"admin" } ]
}
@CrossOrigin
@PostMapping("/adduser")
public int adduser(@RequestParam("email") String email, @RequestParam("username") String username, @RequestParam("password") String password){
UserEntity user =new UserEntity();
user.setEmail(email);
user.setUsername(username);
user.setPassword(password);
int count = userService.add(user);
System.out.println("adduser"+"\t"+String.format("%s", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()))+"\t"+email+"\t"+password+"\t"+count);
return count;//页面显示结果:[ { "age":12, "birthday":"2019-10-08 00:00:00", "userId":1, "username":"admin" } ]
}
}
三、访问结果
getuserlist测试
adduser测试,出了点问题,不过问题不大。