Mybatis介绍、入门程序和遇到问题笔记

一、介绍

1.1 开发环境

  • idea 2018.2.4
  • Mysql 5.7.29
  • Maven 3.5.4

1.2 什么是框架

比如:一张报名表,因为有了条条框框,所以你只需要在对应的地方填你的个人信息可以了。

​ 假如没有了框架,给你一张白纸,让你填写报名,这肯定是不方便的。

1.3 什么是Mybatis

mybatis官网

Mybatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。

Mybatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。

1.4 为什么要用Mybatis

  • 简单易学使用人多,方便
  • 传统的JDBC代码太复杂了
  • sql和代码分离
  • 等等

二、入门级程序

2.1 使用Maven导入依赖

  1. 直接进入网站https://mvnrepository.com/或搜索百度maven,点击第一个
    在这里插入图片描述

  2. 搜索需要导入jar包的依赖 (图片仅展示mybatis)
    在这里插入图片描述

  3. 点进去之后,在下方选择需要的版本
    在这里插入图片描述

  4. 复制maven,粘贴到项目的pom.xml配置文件的标签下即可自动导入
    在这里插入图片描述

  5. 所需依赖全部写入项目中pom.xml的文件,如下
    在这里插入图片描述

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <!-- 模型版本。maven2.0必须是这样写,现在是maven2唯一支持的版本 -->
        <modelVersion>4.0.0</modelVersion>
        <!-- 公司或者组织的唯一标志,并且配置时生成的路径也是由此生成, 如com.maiyazhi,maven会将该项目打成的jar包放本地路径:/com/maiyazhi -->
        <groupId>com.maiyazhi</groupId>
        <!-- 本项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 -->
        <artifactId>text01</artifactId>
        <!-- 本项目目前所处的版本号 -->
        <version>1.0-SNAPSHOT</version>
        <dependencies>
                <!-- 导入JDBC驱动 -->
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>5.1.49</version>
                </dependency>
                <!-- 导入Mybatis框架 -->
                <dependency>
                    <groupId>org.mybatis</groupId>
                    <artifactId>mybatis</artifactId>
                    <version>3.4.6</version>
                </dependency>
            <!-- 导入Junit单元测试工具 -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.7</version>
            </dependency>
        </dependencies>
    
    </project>
    

2.2 Mybatis的核心XML配置文件(mybatis_config.xml)

XML 配置文件中包含了对 MyBatis 系统的核心设置,包括获取数据库连接实例的数据源(DataSource)以及决定事务作用域和控制方式的事务管理器(TransactionManager)

  • 在项目中的resources文件下创建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>
  <mappers>
    <mapper resource="org/mybatis/example/BlogMapper.xml"/>
  </mappers>
</configuration>

2.3 创建JavaBean(User.class)

在com.maiyazhi目录下创建包名为beans,包下JavaBean名为User

在这里插入图片描述

2.4 定义IUserMapper接口,建立配置文件(UserMapper.xml)

接口实现类由原来的UserMapperImpl.java转变成一个Mapper配置文件UserMapper.xml

在mapper包下,定义IUserMapper接口,和抽象方法。(方法功能为:添加用户)

IUserMapper接口如下:

在这里插入图片描述

UserMapper.xml如下:

在这里插入图片描述

官方文档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">
<mapper namespace="org.mybatis.example.BlogMapper">
    <select id="selectBlog" resultType="Blog">
    select * from Blog where id = #{id}
   </select>
</mapper>

注意:配置完UserMapper.xml,在回到mybatis_config.xml核心配置文件中,申明一下:

在这里插入图片描述

2.5 从mybatis_config.xmlX中构建SqlSessionFactory

每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。

SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。

而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先配置的 Configuration 实例来构建出 SqlSessionFactory 实例。

定义一个工具类,用来获取SqlSessionFactor

在这里插入图片描述

package com.maiyazhi.utils;

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.IOException;
import java.io.InputStream;

public class MybatisUtils {
    private static  String resource = "mybatis_config.xml";
    private static  SqlSessionFactory sqlSessionFactory;

    public static SqlSession getSqlSession() throws IOException {
        InputStream inputStream = Resources.getResourceAsStream(resource);
        sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        return  sqlSessionFactory.openSession();
    }



}

2.6 测试

在项目文件text下,创建TextUser测试类
在这里插入图片描述

package com.maiyazhi;

import com.maiyazhi.beans.User;
import com.maiyazhi.mapper.IUserMapper;
import com.maiyazhi.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.io.IOException;

public class TextUser {
    @Test
    public void TestAddUser() throws IOException {
       SqlSession sqlSession= MybatisUtils.getSqlSession();
       IUserMapper userMapper=sqlSession.getMapper(IUserMapper.class);
       User user=new User("wang",12);
       userMapper.addUser(user);
       //更新操作必须提交,如果没有提交的话,不异常也不更新 
       sqlSession.commit();
       sqlSession.close();
    }
}

三、遇到的问题总结

3.1 配置文件找不到异常

在这里插入图片描述

查看编译过的target->classes路径下没有找到定义的xml配置文件。

maven由于它的约定大于配置,我们之后可能遇到 我们写的配置文件,无法被导出或者生效的问题,解决方案:

在项目的pom.xml文件中标签下,加入下列配置信息:

<build>
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.xml</include>
            </includes>
            <filtering>false</filtering>
        </resource>
    </resources>
</build>

3.2 Cannot find class :User(查找不到User类)

在这里插入图片描述

**解决方法:**在配置文件UserMapper.xml中

在这里插入图片描述

3.3不建议在没有服务器身份验证的情况下建立SSL连接

在这里插入图片描述

Mon Sep 21 20:20:38 CST 2020 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification
警告:不建议在没有服务器身份验证的情况下建立SSL连接。根据MySQL 5.5.45+、5.6.26+和5.7.6+的要求,如果没有设置显式选项,则默认情况下必须建立SSL连接。您需要通过设置useSSL=false显式禁用SSL,或者设置useSSL=true并为服务器证书验证提供信任存储。```

**解决方法:**在核心配置文件中Mybatis_config.xml中

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海绵泡泡~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值