Mybatis快速入门及Mapper代理开发

Mybatis框架是优秀的持久层框架,用于简化 JDBC 开发,解决了硬编码问题和操作繁琐问题。MyBatis 免除了几乎所有的 JDBC代码以及设置参数和获取结果集的工作。

MyBatis快速入门:

  1. 写数据库,创建user表,添加数据
  2. 创建模块,导入坐标
    2.1 如果使用 Maven 来构建项目,则需将下面的依赖代码置于 pom.xml 文件中(在官网可查询):
<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>x.x.x</version>
</dependency>
  1. 编写 MyBatis 核心配置文件 – > 替换连接信息 解决硬编码问题
<?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:///mybatis?useSSL=false"/>
                <property name="username" value="root"/>
                <property name="password" value="1234"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
<!--        加载sql的映射文件-->
        <mapper resource="com/lic/mapper/UserMapper.xml"/>
    </mappers>
</configuration>
  1. 编写 SQL 映射文件 --> 统一管理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.lic.mapper.UserMapper">
    <select id="selectAll" resultType="com.lic.pojo.User">
        select * from tb_user;
    </select>
</mapper>
  1. 编码
    5.1. 定义POJO类(pojo 包下创建 User类
    )
public class User {
    
    
    private int id;
    private String username;
    private String password;
    private String gender;
    private String addr;
    //省略了 setter 和 getter
}

5.2 加载核心配置文件,获取 SqlSessionFactory 对象
5.3 获取 SqlSession 对象,执行 SQL 语句

public class MybatisDemo {
    
    
    public static void main(String[] args) throws IOException {
    
    
//        1.加载Mybatis的核心配置文件,获取sqlSessionFactory
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//        获取sqlSession对象,执行sql
        SqlSession sqlSession = sqlSessionFactory.openSession();
//        执行sql;传入唯一标识
        List<User> users = sqlSession.selectList("test.selectAll");

       System.out.println(users);

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

Mapper代理开发

之前我们写的代码是基本使用方式,它也存在硬编码的问题,如下:

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

这里调用 selectList() 方法传递的参数是映射配置文件中的 namespace.id值。这样写也不便于后期的维护。如果使用Mapper 代理方式则不存在硬编码问题。

 //获取UserMapper接口的代理对象
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> userList = mapper.selectAll();

Mapper代理使用要求

  1. 定义与SQL映射文件同名的Mapper接口,并且将Mapper接口和SQL映射文件放置在同一目录下。
    在这里插入图片描述

  2. 设置SQL映射文件的namespace属性为Mapper接口全限定名。
    在这里插入图片描述

  3. 在 Mapper 接口中定义方法,方法名就是SQL映射文件中sql语句的id,并保持参数类型和返回值类型一致。
    在这里插入图片描述

  4. 编写代码

    public static void main(String[] args) throws IOException {
    
    
//        1.加载Mybatis的核心配置文件,获取sqlSessionFactory
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);

        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//        获取sqlSession对象,执行sql
        SqlSession sqlSession = sqlSessionFactory.openSession();
//        Mapper代理开发
        //获取UserMapper接口的代理对象
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List<User> userList = mapper.selectAll();
        System.out.println(userList);
//        释放资源
        sqlSession.close();
    }

运行结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_52822058/article/details/127719414