• 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表,添加数据

    1. create table tb_user
    2. (
    3. id int auto_increment
    4. primary key,
    5. username varchar(20) null,
    6. password varchar(20) null,
    7. gender char null,
    8. addr varchar(30) null
    9. );

    2、创建模块,导入坐标

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

    1. <dependencies>
    2. <dependency>
    3. <groupId>org.mybatisgroupId>
    4. <artifactId>mybatisartifactId>
    5. <version>3.5.5version>
    6. dependency>
    7. <dependency>
    8. <groupId>mysqlgroupId>
    9. <artifactId>mysql-connector-javaartifactId>
    10. <version>5.1.46version>
    11. dependency>
    12. <dependency>
    13. <groupId>junitgroupId>
    14. <artifactId>junitartifactId>
    15. <version>4.13version>
    16. <scope>testscope>
    17. dependency>
    18. <dependency>
    19. <groupId>org.slf4jgroupId>
    20. <artifactId>slf4j-apiartifactId>
    21. <version>1.7.20version>
    22. dependency>
    23. <dependency>
    24. <groupId>ch.qos.logbackgroupId>
    25. <artifactId>logback-classicartifactId>
    26. <version>1.2.3version>
    27. dependency>
    28. <dependency>
    29. <groupId>ch.qos.logbackgroupId>
    30. <artifactId>logback-coreartifactId>
    31. <version>1.2.3version>
    32. dependency>
    33. 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、释放资源

    最终代码如下

    1. package com.clear;
    2. import com.clear.pojo.User;
    3. import org.apache.ibatis.io.Resources;
    4. import org.apache.ibatis.session.SqlSession;
    5. import org.apache.ibatis.session.SqlSessionFactory;
    6. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    7. import java.io.InputStream;
    8. import java.util.List;
    9. public class MybatisDemo {
    10. public static void main(String[] args) throws Exception{
    11. // 1、加载mybatis核心配置文件,获取SqlSessionFactory
    12. String resource = "mybatis-config.xml";
    13. InputStream inputStream = Resources.getResourceAsStream(resource);
    14. SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    15. // 获取SqlSession对象,执行sql语句
    16. SqlSession sqlSession = sqlSessionFactory.openSession();
    17. // 执行sql
    18. List users = sqlSession.selectList("test.selectAll");
    19. System.out.println(users);
    20. // 释放资源
    21. sqlSession.close();
    22. }
    23. }

    结果如下


    解决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语句

     代码如下

    1. package com.clear;
    2. import com.clear.mapper.UserMapper;
    3. import com.clear.pojo.User;
    4. import org.apache.ibatis.io.Resources;
    5. import org.apache.ibatis.session.SqlSession;
    6. import org.apache.ibatis.session.SqlSessionFactory;
    7. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    8. import java.io.InputStream;
    9. import java.util.List;
    10. public class MapperDemo {
    11. public static void main(String[] args) throws Exception {
    12. // 1、加载mybatis核心配置文件,获取SqlSessionFactory
    13. String resource = "mybatis-config.xml";
    14. InputStream inputStream = Resources.getResourceAsStream(resource);
    15. SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    16. // 获取SqlSession对象,执行sql语句
    17. SqlSession sqlSession = sqlSessionFactory.openSession();
    18. // 通过SqlSession对象的getMapper方法获取 Mapper接口的代理对象
    19. UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
    20. // 调用对应方法执行sql语句
    21. List users = userMapper.selectAll();
    22. // 执行sql
    23. //List users = sqlSession.selectList("test.selectAll");
    24. System.out.println(users);
    25. // 释放资源
    26. sqlSession.close();
    27. }
    28. }

     执行结果如下


    Mybatis核心配置文件

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

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

    typeAliases标签

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

     例子如下

     environments标签

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

     

  • 相关阅读:
    电脑办公助手之桌面便签,助力高效率办公
    jQuery学习(一)
    浅谈OpenCV的多对象匹配图像的实现,以及如何匹配半透明控件,不规则图像
    康力健身中心
    LeetCode 207. 课程表(C++)*
    Linux常用命令
    Java文件输入输出(简单易懂版)
    常用软件快捷键
    【PWN · 栈迁移】[CISCN 2019东南]PWN2
    Spring使用RestTemplate返回的嵌套实体对象为空,转换json报错
  • 原文地址:https://blog.csdn.net/weixin_56058578/article/details/127796060