博主的每篇博文的浪漫主义
【“爱意就像大雨落下”】 https://www.bilibili.com/video/BV1444y1f7m6?share_source=copy_web&vd_source=385ba0043075be7c24c4aeb4aaa73352
“爱意就像大雨落下”

又又又见到各位读者拉,①我为什么又说又了??

没错,我们今天的学习笔记的内容是
MyBatis 是一个开源、轻量级的数据持久化框架。
MyBatis 内部封装了 JDBC,简化了加载驱动、创建连接、创建 statement 等繁杂的过程,开发者只需要关注 SQL 语句本身。
那什么是数据的持久化尼?
数据持久化是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中数据模型的统称。例如,文件的存储、数据的读取以及对数据表的增删改查等都是数据持久化操作。
MyBatis 支持定制化 SQL、存储过程以及高级映射,可以在实体类和 SQL 语句之间建立映射关系,是一种半自动化的 ORM 实现。

我们称之为ORM。
那什么是ORM尼?
ORM(Object Relational Mapping,对象关系映射)是一种数据持久化技术,它在对象模型和关系型数据库之间建立起对应关系,并且提供了一种机制,通过 JavaBean 对象去操作数据库表中的数据。
MyBatis 的主要思想是将程序中的大量 SQL 语句剥离出来,使用 XML 文件或注解的方式实现 SQL 的灵活配置,将 SQL 语句与程序代码分离,在不修改程序代码的情况下,直接在配置文件中修改 SQL 语句。
大伙呀,要好好理解这段话呀!!
总归有优点吧,那不然还要这个干什么?
大家看到这一段应该不陌生吧,通过jdbc连接数据库


使用 jdbc编程连接数据库的步骤:
什么是mybatis
我们再来复习一遍!
MyBatis是一个优秀的持久层框架(ORM),它对jdbc的操作数据库的过程进行封装,使开发者只需要关注SQL本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。
Mybatis通过xml或注解的方式将要执行的各种statement (statement,preparedstatemnt、CallableStatement〉配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。
实现一个简易mybatis的步骤怎么来!!

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/数据库名
jdbc.username=root
jdbc.password=123456
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="db.properties"></properties>
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
<setting name="logImpl" value="LOG4J"/>
<!--<setting name="logPrefix" value="mapper" />-->
</settings>
<!-- 配置mybatis运行环境 -->
<environments default="development">
<environment id="development">
<!-- 使用JDBC的事务管理 -->
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!-- MySQL数据库驱动 -->
<property name="driver" value="${jdbc.driver}" />
<!-- 连接数据库的URL -->
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
<!--mapper sql映射文件-->
<!-- 将mapper文件加入到配置文件中 -->
<mappers>
<mapper resource="UserMapper.xml"/>
</mappers>
</configuration>

public interface UserMapper {
//根据ID查询
User findById(Integer id);
}
DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="mapper.UserMapper">
<select id="findById" resultType="domain.User">
select * from USER where id = #{id}
select>
mapper>
@Test
public void test() throws Exception {
String resource = "mybatis-config.xml";
//获取配置文件流
InputStream resourceAsStream = Resources.getResourceAsStream(resource);
//创建SqlSessionFactory对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession session = sqlSessionFactory.openSession();
User u = session.selectOne("mapper.UserMapper.findById", 1);
System.out.println("user:" + u);
session.close();
}
SqlSessionFactory是SqlSession的创建工厂,每一个SqlSession实例代表应用程序和数据库的一次连接。 在整个应用当中,
那么,
这里的学习笔记知识点来自这位博主点这里
SqlSessionFactory

SqlSession
SqlSession源码:

SqlSessionFactory调用过程
mybatis框架主要是围绕着SqlSessionFactory进行的,创建过程大概如下:
String resource = "mybatis-config.xml";//全局配置文件路径
InputStream inputStream = Resources.getResourceAsStream(resource);//读取xml文件
new SqlSessionFactoryBuilder().build(inputStream);//构建会话工厂类
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sqlSessionFactory.openSession();

根据上面代码:mybatis有三个基本要素:


注意在下面该例中,configuration 添加了一个映射器类(mapper class)。映射器类是 Java 类,它们包含 SQL 映射语句的注解从而避免了 XML 文件的依赖。不过,由于 Java 注解的一些限制加之某些 MyBatis 映射的复杂性,XML 映射对于大多数高级映射(比如:嵌套 Join 映射)来说仍然是必须的。有鉴于此,如果存在一个对等的 XML 配置文件的话,MyBatis 会自动查找并加载它(这种情况下, BlogMapper.xml 将会基于类路径和 BlogMapper.class 的类名被加载进来)
@Test
public void test5() throws Exception {
//创建连接池
DataSource dataSource = new PooledDataSource("com.mysql.jdbc.Driver", "jdbc:mysql://localhost:3308/数据库名", "root", "123456");
//事务
TransactionFactory transactionFactory = new JdbcTransactionFactory();
//创建环境
Environment environment = new Environment("development", transactionFactory, dataSource);
//创建配置
Configuration configuration = new Configuration(environment);
//开启驼峰规则
configuration.setMapUnderscoreToCamelCase(true);
//加入资源(Mapper接口)
configuration.addMapper(UserMapper.class);
//通过一个SqlSessionFactoryBuilder对象获取一个SqlSessionFactory工厂实例,通过唯一工厂创建SqlSession
//(相当于获取数据库连接)
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
SqlSession session = sqlSessionFactory.openSession();
try {
//statement:sql唯一标识(mapper.xml映射文件中的id标识)
//parament:参数
User user = session.selectOne("mapper.UserMapper.findById", 1);
System.out.println(user);
//操作数据时,需要有提交操作
//提交session
session.commit();
} finally {
//关闭session
session.close();
}
}
救救就学到这里,博主的文章为什么没人看,虽然是抄作业吧,但我也是仔仔细细过了一遍的
提示:对于这篇学习笔记就暂时到这了,兄弟们加油
对于这篇学习笔记就暂时到这了,兄弟们加油
| 从现在做起,坚持下去,一天进步一小点,不久的将来,你会感谢曾经努力的你! |
如果又出错的,请各位友友指正。

新人报到,各位友友们,给我个三联(点赞,关注,收藏)