3、Mybatis快速上手

目录

Mybatis简述

JDBC缺点

 采用Mybatis简化开发

Mybatis快速入门

1、创建user表,添加数据

2、创建模块,导入坐标

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

4、编写SQL映射文件——> 统一管理sql语句,解决硬编码问题

5、编码

1、定义pojo类(存放从数据库查询出的结果)

 2、加载核心配置文件

3、获取SqlSession对象,执行SQL语句(与PreparedStatements对象一致)

4、释放资源

使用Mapper代理开发

 1、定义与SQL映射文件(UserMapper.xml)同名的Mapper接口,并且将Mapper接口和SQL映射文件放在同一目录下

注意修改mybatis核心配置文件中mapper的resource

 使用Mapper代理加载加载SQL映射文件

2、设置SQL映射文件的namespcae(名称空间)属性为Mapper接口的全限定名

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

4、编码

1、通过SqlSession对象的getMapper方法获取 Mapper接口的代理对象

2. 调用对应方法执行sql语句

Mybatis核心配置文件

typeAliases标签

 environments标签


Mybatis简述

什么是Mybatis?

Mybatis是一款优秀的持久层框架,用于简化JDBC开发

Mybatis本是Apache的的一个开源项目iBatis,2010年这个项目有Apache software foundation 迁移到了goole code,并且更名为Mybatis。2013年11月迁移到了Github

官网:https://mybatis.net.cn/


持久层

        负责将数据保存到数据库的那一层代码

        JavaEE三层架构:表现层、业务层、持久层

                表现层:负责页面展示

                业务层:处理业务逻辑

                持久层:

框架

        框架就是一个半成品软件,是一套可重用的、通用的、软件基础代码模型

        在框架的基础之上构建软件编写更加高效、规范、通用、可扩展

JDBC缺点

 采用Mybatis简化开发

        解决硬编码、操作繁琐问题

Mybatis快速入门

下面以查询user表中所有数据作为演示,步骤如下

        1、创建user表,添加数据

        2、创建模块,导入坐标

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

        4、编写SQL映射文件——> 统一管理sql语句,解决硬编码问题

        5、编码

                1、定义pojo类(存放从数据库查询出的结果)

                2、加载核心配置文件

                3、获取SqlSession对象,执行SQL语句(与PreparedStatements对象一致)

                4、释放资源

1、创建user表,添加数据

create table tb_user
(
    id       int auto_increment
        primary key,
    username varchar(20) null,
    password varchar(20) null,
    gender   char        null,
    addr     varchar(30) null
);

2、创建模块,导入坐标

   创建Maven模块,并在pom.xml导入如下坐标

 <dependencies>
        <!--mybatis 依赖-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.5</version>
        </dependency>
        <!--mysql 驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.46</version>
        </dependency>

        <!--junit 单元测试-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13</version>
            <scope>test</scope>
        </dependency>

        <!--添加slf4j日志api-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.20</version>
        </dependency>
        <!--添加logback-classic依赖-->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>

        <!--添加logback-core依赖-->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>1.2.3</version>
        </dependency>
    </dependencies>

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

在上一步操作已在pom.xml导入了mybatis的依赖坐标,这一步在src/main/resources下编写mybatis的核心配置文件  mybatis-config.xml ,去官网复制粘贴即可

以上操作不懂可以访问mybatis官网https://mybatis.net.cn/getting-started.html

4、编写SQL映射文件——> 统一管理sql语句,解决硬编码问题

这一步在src/main/resources下编写sql映射文件  UserMapper.xml(xxxMapper操作那一张数据库表,前面就写那一张表的表名) ,去官网复制粘贴即可

 以上操作不懂可以访问mybatis官网https://mybatis.net.cn/getting-started.html

5、编码

1、定义pojo类(存放从数据库查询出的结果)

 2、加载核心配置文件

加载mybatis核心配置文件,获取SqlSessionFactory(去官网复制)

 

3、获取SqlSession对象,执行SQL语句(与PreparedStatements对象一致)

4、释放资源

最终代码如下

package com.clear;

import com.clear.pojo.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.InputStream;
import java.util.List;

public class MybatisDemo {
    public static void main(String[] args) throws Exception{
        // 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();
    }
}

结果如下


解决SQL警告 

如图,虽然sql语句没问题,数据库也有该表,但是因为IDEA中无法得知表的存在而告警

解决方法

 


使用Mapper代理开发

使用Mapper代理开发的目的

        解决原生方式中的硬编码

        简化后期执行SQL

mybatis官网也是这是说的,如下图所示

 

 1、定义与SQL映射文件(UserMapper.xml)同名的Mapper接口,并且将Mapper接口和SQL映射文件放在同一目录下

步骤如下:

1、在com/clear/mapper下创建一个与SQL映射文件同名的接口

 2、将SQL映射文件UserMapper.xml移动至resource/com/clear/mapper目录下

注意修改mybatis核心配置文件中mapper的resource

 使用Mapper代理加载加载SQL映射文件

3、(可选步骤)使用Maven工具 compile测试SQL映射文件与接口是否在同一目录

 

 验证成功,SQL映射文件与接口都在classes/com/clear/mapper目录下

2、设置SQL映射文件的namespcae(名称空间)属性为Mapper接口的全限定名

 

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

4、编码

1、通过SqlSession对象的getMapper方法获取 Mapper接口的代理对象

2. 调用对应方法执行sql语句

 代码如下

package com.clear;

import com.clear.mapper.UserMapper;
import com.clear.pojo.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.InputStream;
import java.util.List;

public class MapperDemo {
    public static void main(String[] args) throws Exception {
        // 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();

        // 通过SqlSession对象的getMapper方法获取 Mapper接口的代理对象
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

        // 调用对应方法执行sql语句
        List<User> users = userMapper.selectAll();

        // 执行sql
        //List<User> users = sqlSession.selectList("test.selectAll");

        System.out.println(users);

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

 执行结果如下


Mybatis核心配置文件

mybatis官网https://mybatis.net.cn/configuration.html

注意:在配置各个标签时,需要遵守前后顺序

typeAliases标签

该标签是意在降低冗余的全限定名的类名书写

 例子如下

 environments标签

该标签是配置数据库的连接信息。可以配置多个environment,通过default属性切换不同的environment

 

猜你喜欢

转载自blog.csdn.net/weixin_56058578/article/details/127796060