一、概念
Mybatis是一个基于Java的持久层框架
持久化
将程序的数据在持久状态和瞬时状态之间转化的过程
为什么需要持久化:1. 内存断电即失 2. 内存太贵了 3. 有些对象不能让他丢失,如账号和密码
持久:数据库、io文件(消耗的资源大)
持久层
完成持久化工作的代码块
二、作用
Mybatis避免了几乎所有的手动设置参数以及获取结果集
Mybatis可以使用简单的XML或注解来配置和映射原生信息,将接口和Java的POJOs映射成数据库中的记录
三、原理
每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先配置的 Configuration 实例来构建出 SqlSessionFactory 实例。
获得了SqlSessionFactory的实例之后,我们就可以从SqlSessionFactory中获取SqlSession的实例。
SqlSession提供了在数据库执行SQL命令的所有方法,可以把它当作以前JDBC的Statement或PrepareStatement。
可以通过 SqlSession 实例来直接执行已映射的 SQL 语句。
四、具体操作
1.编写mybatis核心配置文件
① 连接数据库
注意:&在xml里得写成&
<environmentsdefault="mysql">
<environmentid="mysql">
<transactionManager type="JDBC"></transactionManager>
<dataSourcetype="POOLED">
<propertyname="driver"value="com.mysql.cj.jdbc.Driver"/>
<propertyname="url"value="jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=UTC"/>
<propertyname="username"value="root"/>
<propertyname="password"value="123456"/>
</dataSource>
</environment>
</environments>
② 注册mapper.xml(写了mapper.xml之后)
<mappers>
<mapperresource="userMapper.xml"></mapper>
</mappers>
2. 编写mybatis工具类
① 获取SqlSessionFactory
a. 获取资源
b. 将资源写入流
c. 用SqlSessionFactoryBuilder创建SqlSessionFactory实例
② 获取SqlSession
调用SqlSessionFactory的openSession()方法获得
③ 关闭
3. 编写接口
Public class UserMapperImpl implements UserMapper
{
@Override
publicList<User>selAll(){
SqlSession sqlSession=MybatisUtils.getSqlSession();
UserMapper mapper=sqlSession.getMapper(UserMapper.class);
List<User> users=mapper.selAll();
return users;
}
}
4. Mapper.xml文件
<mapper namespace="com.xk.mapper.UserMapper">
<selectid="selAll" resultType="com.xk.pojo.User">
SELECT * from USER
</select>
</mapper>
说明:namespace:该mapper的命名空间,也就是对应的类
id:对应的方法名
5. 测试
① 获得SqlSession对象
② 执行SqlSession
SqlSession sqlSession=MybatisUtils.getSqlSession();
UserMapper mapper=sqlSession.getMapper(UserMapper.class);
List<User> users=mapper.selAll();