mybatis的介绍
Mybatis是一个封装来jdbc的持久层框架,它和Hibernate都属于ORM框架,但是具体来讲,Hibernate是一个完全的ORM框架,而Mybatis是一个不完全的ORM框架。
Mybatis让程序员只关注sql本身,而不需要再去关注如连接的创建、statement的创建等操作(类似于把需要重复使用的方法包装起来)。
Mybatis会将输入参数、输出结果进行映射。
分析jdbc的问题
原生态的jdbc代码
public static void main(String[] args) {
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
try {
//1、加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
//2、通过驱动管理类获取数据库链接
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8", "root", "admiin");
//3、定义sql语句 ?表示占位符
String sql = "select * from user where username = ?";
//4、获取预处理statement
preparedStatement = connection.prepareStatement(sql);
//5、设置参数,第一个参数为sql语句中参数的序号(从1开始),第二个参数为设置的参数值
preparedStatement.setString(1, "王五");
//6、向数据库发出sql执行查询,查询出结果集
resultSet = preparedStatement.executeQuery();
//7、遍历查询结果集
while(resultSet.next()){
User user
System.out.println(resultSet.getString("id")+" "+resultSet.getString("username"));
}
} catch (Exception e) {
e.printStackTrace();
}finally{
//8、释放资源
if(resultSet!=null){
try {
resultSet.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(preparedStatement!=null){
try {
preparedStatement.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(connection!=null){
try {
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
总结:
1.在创建连接时,存在硬编码
2.配置文件(全局配置文件):
在执行statement时存在硬编码
3.配置文件(映射文件)
频繁的开启和关闭数据库连接,会造成数据库性能下降。
数据库连接池(全局配置文件)
Mybatis的框架原理
参考画图.xlsx
入门程序
从需求入手:
对订单商品案例中的用户表进行增删改查操作
- 根据用户ID查询用户信息
- 根据用户名称模糊查询用户列表
- 添加用户
- 删除用户(练习)
- 修改用户(练习)
环境配置准备
Jdk:1.8
Idea:Rapideclipse
Mybatis:3.5.2
数据库:MySQL
下载mybatis(去maven里查找然后注入依赖)
- 数据库脚本初始化
- 数据库脚本
导入包:
1.执行sql_table.sql脚本,创建数据库表;
2.执行sql_data.sql初始化测试数据。
工程搭建
- 注入Mybatis的核心包和依赖包
- 注入MySQl的驱动包
- Junit(非必须)
代码实现
创建pojo类(例如对象的属性,getset方法等等)
创建全局配置文件
在config目录下,创建mybatis-config.xml文件。
需求开发
- 根据用户ID查询用户信息
映射文件:
在config目录下,创建UserMapper.xml(这种命名规范是由ibatis遗留下来)
在全局配置文件中加载映射文件
测试代码
记得更改图中的配置文件,那是先前的~
根据用户名称模糊查询用户列表
- 射文件
测试代码
2.添加用户
映射文件
测试