MyBatis笔记

MyBatis简介:

MyBatis是一个持久层框架。它的数据访问层DAO(Data Access Objects)是不需要实现类的,它只需要一个接口和XML(或注解),就可以将接口和 Java 的 POJO( Plain Old Java Objects,普通的Java 对象)映射成数据库中的记录。
Mybatis提供自动映射、动态SQL、级联、缓存、注解、代码和SQL分离等特性。

 

MyBatis核心组件之间的关系:

映射器和SqlSession都可以发送SQL到数据库执行。

 

Mybatis的开发流程:


1.导入JDBC连接驱动,导入Mybatis核心jar包和依赖的jar包


2.创建核心配置文件,在该文件中创建了一个连接JDBC,和一个连接池配置(数据库驱动名、数据库的连接url、用户名、密码)
3.添加映射配置文件(用来映射实体类属性和数据库表中的字段),在该配置文件中,在mapper标签里指定一个唯一的namespace值,在该标签下添加增删改查的语句 <select><delete><update><insert>
4.在Mybatis的核心配置文件中将定义好的mapper配置文件组装起来(关联)

<configuration>
<!-- 数据库环境 -->
	<environments default="development">
		<environment id="development">
		<!-- 指定类型是JDBC,数据源是连接池 -->
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<property name="url" value="jdbc:mysql://localhost:3306/ssm?characterEncoding=utf-8" />
				<property name="username" value="root" />
				<property name="password" value="root" />
			</dataSource>
		</environment>
	</environments>
	<!-- 在核心配置文件中,将映射配置文件组装起来 -->
   
	<mappers>
	<mapper resource="UserMapper.xml" />	 
	</mappers>
</configuration>


5.编写程序
    首先创建一个 new SqlSessionFactoryBuilder,调用build方法,该方法要传入一个InputStream,该输入流可以调用   Resources.getResourceAsStream("核心配置文件名")。该build方法会返回一个SqlSessionFactory
    通过SqlSessionFactory的open方法获取一个SqlSession
    通过SqlSession执行增删改查,(查找selectOne、selectList),该方法要传入一个字符串“namespa.sqlid”,查找之后会返回数据
    关闭SqlSession,将该SqlSession还到连接池中  

private static SqlSessionFactory sqlSessionFactory=null;
	//private static SqlSession session=null;
	//sqlSessionFactory是单例,但sqlSession是多例
	
	//在类加载的时候仅执行一次
	static {
		//创建SqlSessionFactory
		//先创建SqlSessionFactoryBuilder
		try {
			sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("sqlMapConfig.xml"));
			//sqlSessionFactory.openSession();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

 

SqlSessionFactory(工厂接口):

我们看到SqlSessionFactory是一个接口,所以不能通过new来创建它的实例,而MyBatis提供了构造器SqlSessionFactoryBuilder。所以通过SqlSessionFactoryBuilder 的build()方法去创建SqlSessionFactory。

其实是首先MyBatis读取配置文件sqlMapConfig .xml,通过Configuration类对象去构建整个MyBatis 的上下文。SqlSessionFactory在MyBatis中存在两个实现类SqlSessionManager(多线程下使用)和DefaultSqlSessionFactory(单线程使用 )。它们之间的关系如下:



SqlSession:

SqlSession的作用类似雨一个JDBC中的Connection对象,代表着一个连接资源的启动。

它的作用:1.获取Mapper接口  2.发送SQL给数据库 3.控制数据库事务

// 添加用户
	public void save(User user) {

		System.out.println("使用Mybatis将数据存储到数据库中");
		// 使用Mybatis提供的编程API
		// 每调用一次sava方法,就创建一个新的sqlSession
		SqlSession sqlSession = sqlSessionFactory.openSession();
		// insert方法传入了一个user实例,这个user实例里面封装了数据
		sqlSession.insert("user.save", user);
		// 执行更改相关的操作(insert,delete,update),要提交事务
		sqlSession.commit();
		if (sqlSession != null) {
			// 释放资源
			sqlSession.close();
		}
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值