Mybatis学习第一天
1.数据库连接字符串,用户名,密码等信息硬编到java代码中,维护不方便,修改内容时需要重新编译java代码,解决方案,放置到外部配置文件中
2.sql语句硬编译到java代码中,问题
a.维护不方便
b.代码重用性差
解决:假设能否将sql配置到外部文件
3.手动设置参数
a.将参数硬编译到java代码中
b.判断参数类型,使用极其不便
解决:能否自动设置参数?
1.数据库连接字符串,用户名,密码等信息硬编到java代码中,维护不方便,修改内容时需要重新编译java代码,解决方案,放置到外部配置文件中
2.sql语句硬编译到java代码中,问题
a.维护不方便
b.代码重用性差
解决:假设能否将sql配置到外部文件
3.手动设置参数
a.将参数硬编译到java代码中
b.判断参数类型,使用极其不便
解决:能否自动设置参数?
mybatis的前身是ibatis,Apache的一个开源项目,2010年这个项目从Apache迁移到Google Code改名为mybatis 之后将
版本升级到3.x,其官网:http://blog.mybatis.org/,从3.2版本之后迁移到github,目前稳定版本是3.2.8
Mybatis是一个类似于hibernate的orm持久化框架,支持普通sql查询,存储过程以及高级映射。mybatis通过使用简单的xml或注解用于
配置和原始映射,将接口和pojo对象映射成数据库中的记录
由于Mybatis是直接基于JDBC做了简单的映射包装,所以从性能角度来看
JDBC>Mybatis>Hibernate
package cn.itcast.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class JDBCTest
{
public static void main(String[] args)
{
Connection connection = null;
PreparedStatement prepareStatement = null;
ResultSet executeQuery = null;
try
{
//加载驱动
Class.forName("com.mysql.jdbc.Driver");
//获取连接
String url = "jdbc:mysql://127.0.0.1:3306/mybatis";
String username = "root";
String password = "admin";
connection = DriverManager.getConnection(url, username, password);
//获取statement对象
String sql = "select * from tb_user where user_name = ?";
prepareStatement = connection.prepareStatement(sql);
//设置参数
prepareStatement.setString(1, "zhangsan");
//执行sql 获取结果集
executeQuery = prepareStatement.executeQuery();
//遍历结果集
while (executeQuery.next())
{
System.out.println("username :" + executeQuery.getString("user_name"));
System.out.println("name :" + executeQuery.getString("name"));
System.out.println("age :" + executeQuery.getString("age"));
}
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
finally
{
try
{
if (null != executeQuery)
{
executeQuery.close();
}
if (null != prepareStatement)
{
prepareStatement.close();
}
if (null != connection)
{
connection.close();
}
}
catch (SQLException e)
{
e.printStackTrace();
}
}
}
}
Mybatis的整体架构
配置文件
mybatis-config.xml(全部参数,数据源)
Mapper.xml(多个,多个Statement)
|
SqlSessionFactory
|
SqlSession
|
executor(执行器)
参数输入Map,HashMap | (输出) 参数输出Map,HashMap,Pojo
pojo,基本数据类型(输入) MappedStatement(一个一个的sql) 基本数据类型
|
数据库
1.配置文件,有两类配置文件
a)其中一类是,mybatis-config.xml(文件名称不是写死的,随便定义),定义全局参数
b)第二类,Mapper.xml,可以是多个,每个mapper.xml中定义了多个sqlStatement
2.通过配置文件得到SqlSessionFactory
3.通过SqlSessionFactory得到SqlSession
4.SqlSession通过底层提供的执行器来执行Statement(sql)执行器有两种实现
a)基本实现
b)带有缓存功能的实现
5.通过对MapperStatement输入参数执行sql,输出结果,在MyBatis中输入和输入的类型,Map.pojo.基本类型