面向接口编程的思想
ORM思想object relational mapping
一个表数据对应一个类
表中的一条数据对应java类的一个对象
表中的一个字段对应java类的一个属性
sql是需要结合列名和表的属性名来写,注意起别名
两种技术
JDBC结果集获取元数据: ResultSetMetaData
获取列数 : getColumnCount()
获取列的别名 : getColumnLabel()
通过反射,创建指定类的对象,获取指定的属性并赋值
关于PreparedStatement解决注入问题
public interface PreparedStatement extends Statement
表示预编译的SQL语句的对象。
PreparedStatement除了可以解决拼串,sql注入问题外,还有以下好处
1.PreparedStatement可以操作Blob的数据,而Statement做不到
2.PreparedStatement可以实现更高效的批量操作
Statement像一个信使一样,传送sql语句到数据库服务器中(执行sql语句)进行操作的,
PreparedStatement与Statement的对比
1.代码的可读性和可维护性
2.PreparedStatement能最大可能提高性能:
①DBserver会对预编译语句提供性能优化,因为预编译语句有可能被重复调用,
所有语句在被DBServer编译器编译后的执行代码被缓存下来,
那么下次调用时只要是相同的预编译语句就需要编译,
只要将参数直接传入编译过的语句执行代码中就会得到执行
②在stamement语句中,即使是相同操作,但因为数据内容不一样,
所以整个语句本身不能匹配,也就没有了缓存的意义,
事实是没有数据库会对普通语句编译后的执行代码缓存。
这样每执行一次都会对传入的语句编译一次
③(语法检查, 语句检查, 翻译成二进制命令, 缓存)
3.PreparedStatement可以防止SQL注入