MyBatis快速入门

2022-12-21 14:08:57 浏览数 (1)

MyBatis快速入门

官方文档:mybatis – MyBatis 3 | 入门

一、导包

  1. 将 mybatis-x.x.x.jar 文件置于类路径(classpath)中即可。
  2. 使用Maven构建项目时,将以下依赖置于pom.xml文件中
代码语言:javascript复制
<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>x.x.x</version>
</dependency>

二、配置SQL映射文件

代码语言:javascript复制
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="test">
  <select id="selectBlog" resultType="User">
    select * from User where id = #{id};
  </select>
</mapper>

配置字段解释:

  1. mapper : namespace:名称空间,通常情况下,一个项目的数据库不只有一张表,而操作不同表的SQL语句的id(下方解释id)的有可能重复,如查询所有用户信息和查询所有管理员信息,SQL语句的id可都为 selectAll 此时,名称空间便可对此进行区分,就像3班的张三和4班的张三。
  2. select(不只有select,还有insert,update等):
    1. id:在同一名称空间内,一条SQL语句的唯一标识。
    2. resultType:返回结果的类型,类似于泛型中尖括号中的内容的作用。

三、配置核心配置文件以及在核心配置文件中加载SQL映射文件

代码语言:javascript复制
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    
    <!--
    设置别名
    -->
    <typeAliases>
        <package name="com.cikian.pojo"/>
    </typeAliases>
    
    <environments default="development">
        <!--
        配置数据库连接环境信息,可以配置多个environment,使用不同的id区分,可通过上方的default属性选择使用相应的环境
        -->
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql:///mybatis?useSSL=False"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
        
    </environments>
    
    <mappers>
        <!--加载SQL映射文件,两种方式-->
        <mapper resource="com/cikian/mapper/UserMapper.xml"/>
        <package name="com.cikian.mapper"/>
    </mappers>
    
</configuration>

核心配置文件中,<dataSource> 标签中的内容……..(一看就懂0.0)

加载SQL映射文件的两种方式:

  1. 第一种方式resource字段的值即为SQL映射文件的相对路径。
  2. 第二种方式为“包扫描”方式,如上,会加载com/cikian/mapper目录中所有的SQL映射文件(有条件,如下

在代理开发中,Mapper接口名和SQL映射文件名称相同,并且在同一目录下,推荐使用第二种方式加载映射文件,如果使用第一种方式,有多少SQL映射文件就需要写多少次,比较繁琐,而第二种方式只需要写一次。

四、在Java中使用

代码语言:javascript复制
public class MyBatisDemo {
    public static void main(String[] args) throws IOException {
        // 1.加载配置文件
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        // 2.获取SqlSession对象
        SqlSession sqlSession = sqlSessionFactory.openSession();

        // 3.执行SQL
        List<User> users = sqlSession.selectList("test.selectAll");//这里就是名称空间和id的使用
        System.out.println(users);

        // 4.释放资源
        sqlSession.close();
    };
};

五、代理开发

要求:

  1. 定义与SQL映射文件同名的Mapper接口,并且将Mapper接口和SQL映射文件放在同一目录下;
  2. 设置SQL映射文件的namespace属性为Mapper接口全限定名;
  3. 在Mapper接口中定义方法,方法名就是SQL映射文件中SQL语句的id,并保持参数类型和返回值类型一致;
代码语言:javascript复制
public class MyBatisDemo2 {
    public static void main(String[] args) throws IOException {
        // 1.加载配置文件
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        // 2.获取SqlSession对象
        SqlSession sqlSession = sqlSessionFactory.openSession();

        // 3.执行SQL
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);// 获取接口的代理对象
        List<User> users = userMapper.selectAll();
        System.out.println(users);

        // 4.释放资源
        sqlSession.close();
    };
};

代理开发中,通过SqlSession的getMapper方法获取Mapper接口的代理对象,代理对象再调用相关方法(方法名与SQL语句id相同)即可完成SQL的执行。

0 人点赞