04.17
负责java与数据库连接的工具
在创建javaweb项目时,进行分包
dao、service、servlet、util、model
dao层负责与数据交互的类、
servlet 与前端交互的类
service 负责业务逻辑
util 工具类
model 实体类
-
根据数据库创建实体类
-
编写util类
a)导入jdbc的包。
1)右键项目 build path
2)选择导入外部jar包 需要导入lib文件下面(右键添加一下)
3)点击保存
注意:外部jar包位置不要变 目前只有一个 很多个
b)创建静态变量(指定驱动连接 连接的地址 数据库账号 数据库密码)
c)编写GetConnection方法
d)编写关闭的方法
3.编写dao层
例如:通过id找实体类
获得驱动连接
加载驱动
获得Statement (操作sql语句的)
获得ResultSet (获取结果集)
4.测试
=========================================================
DriverManager
负责加载驱动(驱动:与数据库的连接)
语法:
DriverManager.getConnection(url,name,password);
url:数据库的地址
name:数据库账号
password:数据库密码
语法:
static String url = “jdbc:mysql://localhost:3306/test”;
static String name =“root”;
static String password = “123456”;
Connection
连接驱动 通过DriverManager拿到Connection 对象
语法:
Connection = .getConnection()
====================================================================
Statement
作用:操作sql语句
获取:Connection.createStatement;
语法:Statement.executeQuery(sql语句)
ResultSet
作用:得到返回值
获取: ResultSet对象 = Statement.executeQuery(sql语句)
使用:
需要通过:ResultSet.next()
======================================================================
util 为整个项目(dao层的类)提供Connection对象
static String driver = “com.mysql.jdbc.Driver”;
static String url = “jdbc:mysql://localhost:3306/test”;
static String name =“root”;
static String password = “123456”;
//保证整个项目只有一个Connection对象 应该写成单例
//对Connection对象 连接驱动的保护
public static Connection getConnection(){
Connection con = null;
try {
//配置文件
//程序运行时,动态的加载对象(class文件 ==> java文件)
//动态的调用java对象里面的方法
Class.forName(driver);
con = DriverManager.getConnection(url,name,password);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return con;
====================================================================
dao
接口
定义了基本的增删改查方法
实现类Userdao
实现增删改查方法
例如:
@Override
public User findUserById(int id) {
//定义了User 因为需要返回值
User user = null;
//User user = new User();
try {
//通过Connection 拿到 Statement对象
//Statement对象 有操作sql语句的方法
Statement statement = con.createStatement();
//编写sql语句
//因为需要将sql语句作为参数 传给Statement对象的查询方法
String sql = “select * from user where id =”+id;
//测试sql语句 是否拼接正确 打印到控制台
System.out.println(sql);
//定义一个ResultSet对象 来接收 查询返回的结果
ResultSet re = statement.executeQuery(sql);
//遍历 ResultSet
while(re.next()){
//为空的user对象赋值
//re.getInt(1) 返回数据库的第一列
user = new User(re.getInt(1),re.getString(2),re.getInt(3),re.getInt(4),re.getInt(5),re.getString(6),re.getString(7));
//user.setId(re.getInt(1))
//user.setName(re.getString(2))
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return user;
}