MyBatis-01-介绍及环境搭建

MyBatis-01-介绍及环境搭建,第1张

MyBatis-01-介绍及环境搭建 一、MyBatis简介

MyBatis本是apache的一个开源项目iBatis,2010年这个项目迁移到了[google code](https://baike.baidu.com/item/google code/2346604),并且改名为MyBatis。

2013年11月迁移到Github。

MyBatis 是一款优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。

回顾 JDBC *** 作数据库

public static void main(String[] args) {
		Connection conn = null;
		Statement stm = null;
		try {
			// 加载驱动
			Class.forName("com.mysql.jdbc.Driver");
			String url = "jdbc:mysql://127.0.0.1:3306/test";
			// 通过DriverManager获取连接
			conn = DriverManager.getConnection(url, "root", "hello");
			System.out.println("conn:" + conn);
			// 准备 *** 作数据库
			// Statement:用于执行静态SQL语句并返回它所生产结果的对象
			stm = conn.createStatement();
			String sql = "insert into test.new_table(t1,t2) values('t11','t22');";
			Boolean ret = stm.execute(sql);
			conn.close();
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		} finally {
			// 釋放資源
		}
	}

mybatis *** 作方式

public static void main(String[] args) {
		User user = new User();
		user.setUserId(1);
		user.setUserCode("ganyongming");
		sqlSession.getMapper(UserDao.class).addUser(user );
		sqlSession.close();
	}
二、MyBatis与jdbc区别

JDBC:

Sql语句在代码中硬编码,造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变Java代码。

MyBatis

MyBatis是一个优秀的持久层框架,它对jdbc的 *** 作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。

三、MyBatis特性

基于SQL语法,简单易学

SQL语句封装在配置文件中,便于统一管理与维护,降低程序的耦合度

方便程序代码调试

对数据库 *** 作结果进行自动映射

提供了一级和二级缓存,提高了程序性能

四、搭建MyBatis开发环境

导入jar包 mybatis-3.5.9.jar

编写核心配置文件


<configuration>
	
	
		<environment id="dev">
			<transactionManager type="JDBC">
			transactionManager>
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Drvier"/>
				<property name="url" value="jdbc:mysql://127.0.0.1:3306/woniu"/>
				<property name="username" value="root"/>
				<property name="password" value="ROOT"/>
			dataSource>
			environment>
	environments>
configuration>

测试获取SqlSession

五、工具类
public class MyBatisUtils {
  
    private static SqlSessionFactory sqlSessionFactory = null;
    static{
        try {
            Reader reader = Resources.getResourceAsReader("mybatis-config1.xml");
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
        } catch (IOException e) {
            e.printStackTrace();
    
        }
    }
 

    public static SqlSession openSession(){
        return sqlSessionFactory.openSession();
    }
 
    public static void closeSession(SqlSession sqlSession){
        if (sqlSession != null){
            sqlSession.close();
        }
    }
}

六、掌握核心对象

核心对象最佳生命周期最佳作用域
SqlSessionFactoryBuilder方法体内方法体内局部变量
SqlSessionFactory从应用服务启动开始一直到应用服务停止application整个应用内
SqlSession一次请求的有效期一次请求的有效期内
1、SqlSessionFactoryBuilder

SqlSessionFactoryBuilder 负责构建 SqlSessionFactory,并且提供了多个 build() 方法的重载.

生命周期和作用域

SqlSessionFactoryBuilder 的最大特点是:用过即丢。一旦创建了 SqlSessionFactory 对象之后,这个类就不再需要存在了,因此 SqlSessionFactoryBuilder 的最佳范围就是存在于方法体内,也就是局部变量而已。即最佳范围是方法范围 (本地方法变量)。

2、SqlSessionFactory

SqlSessionFactory 简单的理解就是创建 SqlSession 实例的工厂。所有的 MyBatis 应用都是以 SqlSessionFactory 实例为中心, SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 对象来获得。有了它之后,顾名思义,就可以通过 SqlSessionFactory 提供的 openSession() 方法来获取 SqlSession 实例。

说明: openSession() 方法的参数为 boolean 值时,若传入 true 表示关闭事务控制,自动提交; false 表示开启事务控制。若不传入参数,默认为 true。

生命周期和作用域

SqlSessionFactory 对象一旦创建,就会在整个应用运行过程中始终存在。没有理由去销毁或再创建它,并且在应用运行中也不建议多次创建 SqlSessionFactory 。因此 SqlSessionFactory 的最佳作用域是 Application,即随着应用的生命周期一同存在。那么这种 “存在于整个应用运行期间,并且同时只存在一个对象实例” 的模式就是所谓的单例模式(指在应用运行期间有且仅有一个实例)。即 SqlSessionFactory 的最佳范围是应用范围。

3、SqlSession

SqlSession 是用于执行持久化 *** 作的对象,类似于 JDBC 中的 Connection 。它提供了面向数据库执行 SQL 命令所需的所有方法,可以通过 SqlSession 实例直接运行已映射的 SQL 语句。

生命周期和作用域

SqlSession 对应着一次数据库会话。由于数据库会话不是永久的,因此 SqlSession 的生命周期也不应该是永久的。相反,在每次访问数据库时都需要创建它(注意:并不是说在 SqlSession 里只能执行一次 SQL,是完全可以执行多次的,但是若关闭了 SqlSession ,那么就需要重新创建它)。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/890182.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-14
下一篇 2022-05-14

发表评论

登录后才能评论

评论列表(0条)

保存