一、介绍JDBC
JDBC(Java DataBase Connectivity, Java数据库连接) ,是一种用于执行SQL语句的Java API,为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。有了JDBC,程序员只需用JDBC API写一个程序,就可访问所有数据库。
JDBC访问数据库编码步骤:
1:加载一个Driver驱动
2:创建数据库连接(Connection)
3:创建SQL命令发送器Statement
4:通过Statement发送SQL命令并得到结果
5:处理结果(select语句)
6:关闭数据库资源ResultSet Statement Connection
创建模块/项目 导入jar包
二、sql注入
SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。
以模拟登录为例,当输入了精心设计的用户名密码后,即使是错误的,也能登录成功。
原因是:SQL语句是字符串拼接的。SQL语句中拼接的内容破坏了SQL语句原有的判断逻辑
如何解决呢?使用PreparedStatement预编译语句对象就可以解决掉。
三、常用SQL语句
增加:insert into 表名(列名,列名,列名) values(?,?,?)
如果要添加全部列的内容,表名后可以不写列名
删除:delete from 表名 where 列名=值 or/and 列名=值
修改:update 表名 set 列名=新值,列名=新值 where 列名=值 or/and 列名=值
查询:1、查询全部列:select * from 表
2、查询某个数据:select 列名,列名 from 表 where 列名=值 or/and 列名=值
四、ResultSet
ResultSet用来封装实体,不方便数据的传递和存储,所以数据应放入集合里
例子:利用ResultSet传数据
//6.处理结果集:
ResultSet rs=ps.executeQuery();
while(rs.next()){
System.out.print(rs.getInt(1)+"\t");
System.out.print(rs.getString(2)+"\t");
System.out.print(rs.getInt(3)+"\t");
System.out.print(rs.getString(4)+"\t");
System.out.println(rs.getString(5));*/
System.out.print(rs.getInt("stuid")+"\t");
System.out.print(rs.getString("sname")+"\t");
System.out.print(rs.getInt(3)+"\t");
System.out.print(rs.getString(4)+"\t");
System.out.println(rs.getString(5));
}
利用集合:
//6.处理结果集:
ArrayList<Student> list=new ArrayList<>();
while(rs.next()){
Student stu=new Student();
stu.setAge(rs.getInt("age"));
stu.setSex(rs.getString("sex"));
stu.setStuid(rs.getInt("stuid"));
stu.setPhone(rs.getString("phone"));
stu.setSname(rs.getString("sname"));
list.add(stu);
}
五、写【实体类】时对实体类的要求
在实体类中,该类的对象主要用处是存储从数据库中查询出来的数据,除此之外,该类没有任何的其他功能。
对实体类的要求:
1、类名和表名保持一致,最好能见名知意
2、属性个数和数据库的表的列数保持一致
3、属性的数据类型和列的数据类型保持一致
4、属性名和数据库表格的列名保持一致
5、所有属性必须是私有的(出于安全考虑)
6、实体类的属性推荐写成包装类
7、日期类型推荐写成java.util.Date
8、所有属性都要有get和set方法
9、必须具备无参构造方法
10、实体类应实现序列化接口(mybatis缓存 分布式需要)
11、实体类中其他构造方法可选
六、编写项目流程
最终项目结构:
1.创建java项目
2.创建src并列目录lib,导入jar包,同时加载到项目里来---右键--add as lib
3.创建实体类:---存储数据,利于传递
4.优化jdbc代码----提取工具类!BaseDao
5.参照Dao模型:
Dao----直接接触数据的代码层====Dao层
---Dao层规定了,我们对数据库该有哪些行为操作!
创建接口、创建实现类
6、创建业务层
创建业务层接口、业务层实现类
7、创建测试类