MyBatis入门

IT蚱蜢哥2022年11月24日大约 5 分钟

MyBatis入门

所有技术学习都是从HelloWorld入门开始,基本步骤如下:

  • 准备工作(创建项目、实体类、表)
  • 导入Jar包
  • 创建mybatis-config.xml核心配置文件
  • 创建Mapper.xml映射文件
  • 测试

准备工作

创建maven项目,通过maven管理项目,数据库使用mysql

下载jar包

要使用 MyBatis, 只需将 mybatis-x.x.x.jaropen in new window 文件置于类路径(classpath)中即可。

如果使用 Maven 来构建项目,则需将下面的依赖代码置于 pom.xml 文件中:

<!-- 添加mybatis核心配置文件 -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.6</version>
</dependency>


<!-- 添加数据库驱动包 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.49</version>
</dependency>

创建mybatis-config.xml核心配置文件

XML 配置文件中包含了对 MyBatis 系统的核心设置,包括获取数据库连接实例的数据源(DataSource)以及决定事务作用域和控制方式的事务管理器(TransactionManager)。后面会再探讨 XML 配置文件的详细内容,这里先给出一个简单的示例:

<?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>
    <!--    配置的环境-->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/yuntu?characterEncoding=utf8"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>

    <!-- 加载映射文件:编写SQL语句的地方  -->
    <mappers>
        <mapper resource="mapper/UserInfoMapper.xml"/>
</configuration>

注:重点关注<dataSource type="POOLED">的type属性、其有三种取值:

  • POOLED:使用Mybatis自带的数据库连接池来管理数据库连接
  • UNPOOLED:不使用任何数据库连接池来管理数据库连接
  • JNDI:jndi形式使用数据库连接、主要用于项目正常使用的时候

当然,还有很多可以在 XML 文件中配置的选项,上面的示例仅罗列了最关键的部分。 注意 XML 头部的声明,它用来验证 XML 文档的正确性

创建UserInfoMapper.xml

创建对应的mapper文件,用来存放对应的sql语句

<?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">
<mapper namespace="com.as.mapper.UserMapper">

    <select id="selectUser" resultType="com.as.bean.UserInfo">
        SELECT id,login_name loginName,nick_name nickName,passwd,NAME,
        email,head_img headImg,user_level userLevel,birthday birthdayDate,
        gender,create_time createTime,operate_time operateTime FROM user_info
        WHERE id = #{id}
    </select>

</mapper>

namespace :命名空间(可以理解为java中package包,用来区分对象),用于隔离sql语句

在UserInfoMapper.xml中添加:半自动化,自己主要负责的是具体的sql的编写,添加到mapper中

测试

1)从 XML 中构建 SqlSessionFactory

2)从SqlSessionFactory获取SqlSession

3)调用指定数据

public static void main(String[] args) throws IOException {

    //1)从 XML 中构建 SqlSessionFactory
    InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

    //2)从SqlSessionFactory获取SqlSession
    SqlSession sqlSession = sqlSessionFactory.openSession();

    //3)调用指定数据
  UserInfo userInfo = sqlSession.selectOne("com.as.mapper.UserMapper.selectUser", 1);
  System.out.println(userInfo);

}

image-20221124160908479

Loading...