首先我们第一步要在虚拟机或者本地构建一个数据库(“如何在虚拟机上安装MYSQL在上一篇讲过”)
#登陆
mysql -uroot -pok
#创建mydemo数据库
create database mydemo;
#使用数据库;
use mydemo;
#建表
create table userinfos(userid int primary key not null auto_increment,
username varchar(20)not null,
birthday date not null,pwd varchar(255));
为表添加数据
我是通过SQLyog导入数据内容
首先创建一个数据表
另存为csv文件格式,再通过SQLyog导入到userinfos表格
创建完毕之后再打开idea
在编写Java代码之前要写一个driver.properties配置文件用来存放连接数据库必要的连接池
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://"数据库所在的IP地址"/mydemo1
username=“MySQL用户名”
password=“MySQL密码”
连接数据库
/**
* 负责产生数据库连接
*/
public class BaseDAO {
private static String URL;
private static String USERNAME;
private static String PASSWORD;
private static String DRIVER;
private static Connection con;
static {
LoadDriver();
}
private static void LoadDriver() {
try{
//加载文件位置
String path = URLDecoder.decode(BaseDAO.class.getResource("/driver.properties").getPath(),"utf-8");
//根据文件位置加载配置文件内容
Properties prop=new Properties();
prop.load(new FileInputStream(path));
//根据文件中key的名称获取数据并填充本类的四个属性
DRIVER=prop.getProperty("driver");
URL=prop.getProperty("url");
USERNAME=prop.getProperty("username");
PASSWORD=prop.getProperty("password");
} catch (IOException e) {
e.printStackTrace();
}
}
protected BaseDAO(){}
/**
*数据库的连接
* @return
*/
public static Connection getConnection(){
if (con==null){
try {
Class.forName(DRIVER);
con= DriverManager.getConnection(URL,USERNAME,PASSWORD);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
return con;
}
构建实体类
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
*实体类
*/
@Data//get/set方法
@NoArgsConstructor//无参构造器
@AllArgsConstructor//全参构造器
@Builder//语法糖格式构造实体对象
public class UserInfos {
private long userid;
private String username;
private Date birthday;
private String pwd;
}
进行增删改查等操作
public class UserinfosDAO extends BaseDAO {
private PreparedStatement pstat;
private ResultSet rs;
//针对增删改查
public void updata(String sql,Object[] params){
try {
pstat=getConnection().prepareStatement(sql);
for (int i = 0; i < params.length; i++) {
pstat.setObject(i+1,params[i]);
}
pstat.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
}
}
//针对查询
public ResultSet query(String sql,Object[] params){
try {
pstat= getConnection().prepareStatement(sql);
for (int i = 0; i < params.length; i++) {
pstat.setObject(i+1,params[i]);
}
rs=pstat.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
}
return rs;
}
// 将信息导入表中
public List<UserInfos> change(String sql,Object[] params){
ResultSet rs=query(sql,params);
List<UserInfos> users=new ArrayList<>();
try {
while (rs.next()){
UserInfos us=UserInfos.builder()
.userid(rs.getLong("userid"))
.username(rs.getString("username"))
.birthday(rs.getDate("birthday"))
.pwd(rs.getString("pwd"))
.build();
users.add(us);
}
} catch (SQLException e) {
e.printStackTrace();
}
return users;
}
//查询所有信息
public List<UserInfos> findAll(){
String sql = "select * from userinfos";
return change(sql,new Object[]{});
}
//通过用户密码查询信息
public UserInfos login(String username,String pwd){
String sql = "select * from userinfos where username=? and pwd=?";
List<UserInfos> uss=change(sql, new Object[]{username,pwd});
return uss.isEmpty()?null: uss.get(0);
}
//通过id查询信息
public UserInfos findById(long id){
String sql = "select * from userinfos while userid=?";
List<UserInfos> uss=change(sql, new Object[] {id});
return uss.isEmpty()?null: uss.get(0);
}
}
测试通过用户密码查询信息
public static void main(String[] args) {
System.out.println(new UserinfosDAO().login("dpjbms", "6317"));
}
结果如下: