MyBatis快速入门

65 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第4天,点击查看活动详情

MyBatis

1 MyBatis快速入门

1.1 案例一

入门_MyBatis中文网

1.1.1 创建所需要的表,这里创建的是tb_user,添加数据

参考useSQL.md文件

1.1.2 创建模块,导入坐标(导入各种依赖以及jar包)

新建一个maven项目,在新建的项目,例如mybatis-demo

<dependencies>
    
        <!--xxx的依赖/驱动-->
        <dependency>
            <groupId>org.XXX</groupId>
            <artifactId>XXX</artifactId>
            <version>X.X.X</version>
        </dependency>

 </dependencies>

1.1.3 编写Mybatis核心配置文件----->替换连接信息,解决硬编码问题

创建编写核心配置文件,l例如mybatis-config.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="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
    
   <!-- 加载SQL的映射,我自己的是UserMapper.xml -->
  <mappers>
    <mapper resource="UserMapper.xml"/>
  </mappers>
</configuration>

1.1.4 编写SQL映射文件----->统一管理SQL语句,解决硬编码问题

创建数据库表的映射对象的xml文件,在里面可以写上所需要的SQL语句,例如UserMapper.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">

<!--名称空间namespace (以后用来引用方便区分方法) -->
<mapper namespace="test">
    <!--返回结果的类型 (就是创建的封装的数据库中的参数) resultType-->
    <select id="selectAll" resultType="com.itheima.pojo.User"> 
        select * from tb_user;
    </select>
</mapper>

1.1.5 编码

​ 1 定义pojo类----->对应user这个表

​ 将数据库表对象的各种参数进行封装并重写toString()方法,例User.java

package com.itheima.pojo;

public class User {

    private Integer id;
    private String username;
    private String password;
    private String sex;
    private String address;

    //封装的get,set方法

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", sex='" + sex + '\'' +
                ", address='" + address + '\'' +
                '}';
    }

}

​ 2 加载核心配置文件,获取SqlSessionFactory对象

​ 新建一个测试类,高于pojo所处的目录,例MybatisDemo.java

//放在方法主体中
public static void main(String[] args) throws IOException {
        //1 加载核心配置文件,获取SqlSessionFactory对象1
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

    }

​ 3 获取SqlSession对象,执行SQL语句

//放在方法主体中
public static void main(String[] args) throws IOException {
        //1 加载核心配置文件,获取SqlSessionFactory对象1
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        //2 获取SqlSession对象,执行SQL语句
        SqlSession sqlSession = sqlSessionFactory.openSession();

        List<User> users = sqlSession.selectList("test.selectAll");
        System.out.println(users);

    }

​ 4 释放资源

//放在方法主体中
public static void main(String[] args) throws IOException {
        //1 加载核心配置文件,获取SqlSessionFactory对象1
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        //2 获取SqlSession对象,执行SQL语句
        SqlSession sqlSession = sqlSessionFactory.openSession();

        List<User> users = sqlSession.selectList("test.selectAll");
        System.out.println(users);

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

2 Mapper代理开发

2.1 使用Mapper代理方式完成案例一

2.1.1 定义与SQL映射文件同名的Mapper接口

例如UserMapper(接口) 并将Mapper接口和映射文件放在同一目录下,注意在resources下新建包的方式是com/xxx/xxx(com/itheima/mapper),因为我的映射文件的接口名称是com.itheima.mapper.UserMapper,然后将UserMapper.xml配置文件拉到建的包中,记得改配置文件mybatis-config.xml中映射文件的路径

<!--加载SQL映射-->
    <mappers>
        <mapper resource="com/itheima/mapper/UserMapper.xml"/>
    </mappers>

image-20220505192942370.png

编译后(RUN Maven----->compile)

image-20220505193458548.png 2.1.2 设置SQL映射文件的namespace属性为Mapper接口全限定名

<!--名称空间namespace已经更改-->
<mapper namespace="com.itheima.mapper.UserMapper">
    <!--返回结果的类型 resultType-->
    <select id="selectAll" resultType="com.itheima.pojo.User">
        select * from tb_user;
    </select>
</mapper>

2.1.3 在Mapper接口中定义方法,方法名就是SQL映射文件中sql语句的id,并保持参数和返回值类型一致

public interface UserMapper {

    //确定返回值对象后,还要知道传回的是一个数据还是一组数据
    List<User> selectAll();
}

2.1.4 编码

2.1.4.1 加载核心配置文件,获取SqlSessionFactory对象

新建一个MybatisDemo2.java文件

//放在方法主体中
public static void main(String[] args) throws IOException {
        //1 加载核心配置文件,获取SqlSessionFactory对象1
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

    }
2.1.4.2 获取SqlSession对象
//放在方法主体中
public static void main(String[] args) throws IOException {
        //1 加载核心配置文件,获取SqlSessionFactory对象1
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        //2 获取SqlSession对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
    
    }
2.1.4.3 执行sql语句,通过SqlSession的getMapper方法获取Mapper接口的代理对象
//放在方法主体中
public static void main(String[] args) throws IOException {
        //1 加载核心配置文件,获取SqlSessionFactory对象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");
        System.out.println(users);
        */
        //3.1 获取UserMapper接口的代理
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        List<User> users = userMapper.selectAll();
        System.out.println(users);


        //3 释放资源
        sqlSession.close();
    }
2.1.4.4 释放资源
//放在方法主体中
public static void main(String[] args) throws IOException {
        //1 加载核心配置文件,获取SqlSessionFactory对象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");
        System.out.println(users);
        */
        //3.1 获取UserMapper接口的代理
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        List<User> users = userMapper.selectAll();
        System.out.println(users);


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

四、总结

以上就是MyBatis的基本使用方法,配合正确的IDE事半功倍哦,谢谢大家的支持。关注不迷路!