Mybatis 第一天课堂笔记
Mybatis课程安排:
第一天:
Jdbc编程中的问题?
Mybatis的框架原理(重点)
Mybatis的第一个程序:
实现用户信息的增、删、改、查。
Mybatis如何解决jdbc编程的问题。
与hibernate不同。
mybatis开发dao两种方法:(重点)
原始的dao开发方法(接口和接口实现)
Mapper动态代码方法
Mybatis的配置文件:
SqlMapConfig.xml(全局配置文件)
XXXXXMapper.xml(映射文件,重点)
Mybatis动态Sql(重点)
resultType(重点掌握)和resultMap区别。
第二天:
Mybatis关联查询:
一对一查询
一对多
多对多
Mybatis的缓存
一级缓存
二级缓存
延迟加载
Mybatis和springmvc整合(重点)
原始的dao开发方法(接口和接口实现)
Mapper动态代码方法
Mybatis逆向工程(由数据库表生成类文件和映射文件)
1 Jdbc编程中的问题
1.1 写一个程序
目标:
1、 通过jdbc程序找出当中的问题
2、 重视jdbc编程,企业在技术选型时对于小型的项目或性能要求较高的项目,优先选用jdbc开发。
准备开发环境:
Jdk1.7.72
Eclipse indigo(3.7)
Mysql5.1
运行环境:
Mysql5.1数据库驱动
创建mysql数据库:
代码如下:
public classJdbcTest {
//定义sql语句,根据名称查询用户表的记录
private static String sql = "SELECT * FROM USER WHERE username = ?";
public static void main(String[] args) throws SQLException {
//数据库连接
Connectionconnection = null;
//预编译statement
//好处:防止 sql注入,提高数据的性能
PreparedStatementpreparedStatement = null;
//结果集
ResultSetresultSet = null;
try {
//加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
//连接数据库
connection= DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis", "root","mysql");
//构造preparedStatement
preparedStatement= connection.prepareStatement(sql);
//向preparedStatement中占位符的位置设置参数
preparedStatement.setString(1,"张三");
//发起数据库查询请求,得到结果集
resultSet= preparedStatement.executeQuery();
//遍历查询结果
while(resultSet.next()){
int id = resultSet.getInt("id");
Stringusername = resultSet.getString("username");
Datebirthday =resultSet.getDate("birthday");
System.out.println(id+" "+username+" "+birthday);
}
}catch(Exception e) {
e.printStackTrace();
}finally{
//释放资源
if(resultSet!=null){
resultSet.close();
}
if(preparedStatement!=null){
preparedStatement.close();
}
if(connection!=null){
connection.close();
}
}
}
}
1.2 总结问题
1、 将sql语句硬编码到java代码中,如果修改sql语句,需要修改java代码,重新编译。系统可维护性不高。
设想如何解决?
能否将sql单独配置在配置文件中。
2、 数据库连接频繁开启和释放,对数据库的资源是一种浪费。
设