Mybatis 入门

Mybatis 是一款持久层框架,半自动的orm(对象关系映射)框架 可以使用注解或xml来配置或映射原始类型

相比于Hibernate全自动的orm框架,Mybatis更加灵活,因为支持自定义的sql语句,所以在调试优化这一方面还是不错

首先我们来看一下mybatis如何安装 我们使用的是 Mybatis3.5.6

下载之后解压 我们可以看到一下的文件
在这里插入图片描述
lib 是mybatis的依赖包 (就如同你用mybatis一样)
mybatis-3.5.6.pdf 是 用户操作手册
mybatis-3.5.6.jar 便是 mybatis核心包

如何使用

使用mybatis 需要先把mybatis核心包放置于项目的类路径
还有我们离不开的Mysql驱动 Mysql8.0.22
Mysql驱动解压之后里面有个jar 也加入项目的类路径
在这里插入图片描述
在这里插入图片描述
直接ok就行 mysql驱动包也是同样操作(可以两个一起添加)

Mybatis核心配置

在这里插入图片描述
从官方文档的这句话得知
SqlSessionFactoryBuilder 需要一个配置文件 或者 配置类来构建 SqlSessionFactory
在这里插入图片描述
可以看到SqlSessionFactoryBuilder有许多种方法来构建实例 但好像没有直接写上文件名的方法

所以我们可以使用Mybatis 提供的Resources类 加载配置文件
在这里插入图片描述
我们可以选择getResourceAsStream(返回InputStream) 或 getResourceAsReader(返回Reader)

知道了如何加载配置文件 现在我们需要来了解一下配置文件

配置文件

首先我们右击创建一个配置文件
在这里插入图片描述
配置文件名称不做限制 需要规范
在这里插入图片描述

XML 配置文件中包含了对 MyBatis 系统的核心设置,包括获取数据库连接实例的数据源(DataSource)以及决定事务作用域和控制方式的事务管理器(TransactionManager)

事务我们可以放在后面在做讲解 但是首先我们需要配置一个数据源 才可以使用

<!--表示使用xml 1.0版本 数据格式 UTF-8-->
<?xml version="1.0" encoding="UTF-8" ?>
<!--mybatis约束 -->
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--configuration配置 mybatis的配置都写在里面-->
<configuration>
    <!--environments 环境配置集-->
    <!--default="development" 默认选择的环境id 表示使用对应环境id的环境-->
    <environments default="development">
        <!--environment 环境集合 可以配置多个 以适应不同的数据库 或开发环境-->
        <!--id="development" 环境id 用来区分环境或选择环境-->
        <environment id="development">
            <!--transactionManager 事务管理器 -->
            <transactionManager type="JDBC"/>
            <!--数据源配置-->
            <dataSource type="POOLED">
                <!--mysql驱动-->
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <!--数据库地址 注意mysql8.0后需要加上时区-->
                <property name="url" value="jdbc:mysql://localhost:3306/数据库名称"/>
                <!--用户名-->
                <property name="username" value="root"/>
                <!--密码-->
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
</configuration>

以上就是一个简单的数据源配置

因为将注解放在第一行 会报错 删掉就可以了

接下来随便创建一个测试类

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

public class mybatistest {
    public static void main(String[] args) {
        try {
            //读取配置文件
            InputStream resourceAsStream = Resources.getResourceAsStream("mybatis_config.xml");
            //得到实例
            SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);

        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

运行结果没有报错 说明我们已经成功得到了一个SqlSessionFactory实例

但是我们想要操作数据库还差了点

首先 我们需要从SqlSessionFactory实例中得到SqlSession实例

SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句。

SqlSession sqlSession = build.openSession()

mybatis映射

mybatis 真正强大之处 在于它的sql语句映射 但是要怎么进行映射呢

在这里插入图片描述
看完这段官方文档 我们可以知道 sql映射有两种方式 注解 和 xml
相比于注解 xml对于复杂的sql语句显得更加明了 所以现在大部分都是采用xml进行映射
需要数据库有一个表和对应的实体类

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  <!--以上是XML 头部和文档类型声明部分-->
  <!--mapper sql映射必须写在里面 namespace 是自定义的-->
<mapper namespace="StudentMapper">
  <!--select 查询语句 id 自定义 resultType返回类型 -->
  <select id="selectOne" resultType="Student">
  	<!--sql语句 #{} 类似jdbc设置参数-->
    select * from student where id = #{id}
  </select>
</mapper>

以上就是一个标准的xml映射 写好之后 我们还需要添加进mybatis配置文件
这样mybatis才能找到xml映射和对应的sql映射

	<!--environments之后 configuration里面-->
	<mappers>
		<!--文件地址-->
        <mapper resource="StudentMapper.xml" />
    </mappers>

以下是执行结果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值