一、导入依赖(记得刷新,确保导入)
之前有写过如何自动导入依赖,详见https://blog.youkuaiyun.com/m0_53536589/article/details/123164232?spm=1001.2014.3001.5502
二、进行配置(所有的配置都写在resources的application.properties文件中)
导入后,会默认去找数据源(要告诉它数据库在哪里),故要进行配置,才可正常运行
#tomcat服务器使用的端口
server.port=80
#Spring JDBC 数据源的配置
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/demo
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=123456
因为我使用的数据库是8这个版本的,所以必须要选择框中的;若版本是5,则使用第一个也ok,但最好用第二个吧。。
(密码是自己设置的,要自己修改下)
( 我的数据库:
三、使用
1、接口(在persistence中)
package com.example.springbootdemo.persistence;
import com.example.springbootdemo.domain.Account;
public interface AccountDAO {
String FIND_BY_USERNAME_AND_PASSWORD = "Select * from user_info where name = ? and password = ?";
public Account findByUsernameAndPassword(Account account);
}
2、实现(在persistence中)
package com.example.springbootdemo.persistence;
import com.example.springbootdemo.domain.Account;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import javax.annotation.Resource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
@Repository
public class AccountDAOImpl implements AccountDAO{
@Autowired
private DataSource dataSource;
@Override
public Account findByUsernameAndPassword(Account account) {
Account loginAccount = null;
try{
Connection connection = dataSource.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement(FIND_BY_USERNAME_AND_PASSWORD);
preparedStatement.setString(1,account.getUsername());
preparedStatement.setString(2,account.getPassword());
ResultSet resultSet = preparedStatement.executeQuery();
if(resultSet.next()){
loginAccount = new Account();
loginAccount.setId(resultSet.getInt("id"));
loginAccount.setUsername(resultSet.getString("name"));
loginAccount.setPassword(resultSet.getString("password"));
loginAccount.setAge(resultSet.getInt("age"));
loginAccount.setGender(resultSet.getInt("gender"));
loginAccount.setEmail(resultSet.getString("email"));
}
resultSet.close();
preparedStatement.close();
connection.close();
}catch (Exception e){
e.printStackTrace();
}
return loginAccount;
}
}
3、service实现层
package com.example.springbootdemo.service;
import com.example.springbootdemo.domain.Account;
import com.example.springbootdemo.persistence.AccountDAO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class AccountServiceImpl implements AccountService{
@Autowired
private AccountDAO accountDAO;
@Override
public Account login(Account account) {
return accountDAO.findByUsernameAndPassword(account);
}
}
四、测试(在src\test中)(因为与数据库交互很容易出错)
每做一步最好都要测试一下
只有框起来的是我写的,其他都是框架自动生成的
测试成功: