mybatis的使用入门

mybatis的使用总共分成部分,可依次进行

1.mysql的安装
可以在网上搜索mysql的相关教程即可,安装完mysql之后再往下进行。需要记住自己安装过程中设置的mysql数据库的登录用户名以及密码。

2.创建数据库以及数据表
首先是打开终端进行登录mysql数据库
操作指令:mysql -uroot -p12345678
root:mysql的用户名
12345678:mysql密码
在这里插入图片描述
创建test_db数据库(已经创建过不再演示)
操作指令:create database test_db;
创建完之后可以执行:show databases;进行查看是否创建成功;
在这里插入图片描述
进入test_db数据库
操作指令:use test_db;

创建student数据表
操作指令:
CREATE TABLE student (
id int NOT NULL AUTO_INCREMENT,
name varchar(20) DEFAULT NULL,
age int DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

创建完数据库后进行插入数据,可以自行多插入几条
操作指令:insert into student (name,age) values(“xiaoqu”,16);
在这里插入图片描述

3.代码编写
直接创建的maven工程即可,不会可直接进行百度
工程架构如下图所示
在这里插入图片描述
首先在pom.xm中引入mysql和mybatis的依赖

 <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.2</version>
        </dependency>

        <!--(mysql连接类)jdbc依赖,mybatis仍然需要用到jdbc,只是不需要我们手动配置jdbc-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.46</version>
        </dependency>
        <!--可以通过注解@data自动生成get和set方法-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.20</version>
        </dependency>

在resource目录下新建一个mybatis的核心配置文件,我这里即mybatisconfig.xml这个配置文件,代码如下, 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>
    <properties resource="my.properties">

    </properties>

    <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://localhost:3306/test_db?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
                <property name="username" value="root"/>
                <property name="password" value="12345678"/>
            </dataSource>
        </environment>
    </environments>

    <!--注册mapper(映射器)-->
    <mappers>
        <mapper resource="config/Studentconfig.xml"/>
    </mappers>

</configuration>

需要注意的地方
在这里插入图片描述
到这里mybatis的核心配置类已经写完,那有了这个核心配置类,我们就可以去得到sql语句的执行对象,怎么得到我马上讲,接下来的操作可以类比JDBC中的connection和statement

以下这个类用于生成执行sql的对象

package MybatisUtils;

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 GetSqlsession {
    private static InputStream inputStream;

    //这个方法生成一个生产Sqlsession的工厂,即SqlSessionFactory
    public static SqlSessionFactory createfactory() {

        {
            try {
                inputStream = Resources.getResourceAsStream("mybatisconfig.xml");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //通过把这个工厂return出来,以便后续通过这个工厂获得SqlSession对象
        return sqlSessionFactory;
    }

    //这个方法获得SqlSession对象
    public static SqlSession getsqlsession(){
        return createfactory().openSession();
    }


}

接下我们肯定要去使用这个SqlSession,那么我们先来创建一个实体类,@data注解的使用需要引入依赖,在前面已经引入了

package Do;

import lombok.Data;

@Data
public class StudentDo {
    int id;
    String name;
    int age;
}


实体类写完后,我们来写接口

package Dao;

import Do.StudentDo;

import java.util.List;

public interface StudentDao {
    List<StudentDo> selectStudent();
}

定义好接口后,接下来开始写接口对应的.xml文件(这里即Studentconfig.xml),mybatis就是通过mapper来调用接口中的方法的,以下是这个接口对应的配置文件

<?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.xml的身份标签-->
<mapper namespace="Dao.StudentDao">

    <!--sql语句是select类型,标签用select,
    id随便起,是这条sql语句的身份标签,一个xml文件里可以有多个sql语句,但是id不能重复

    resultType是执行sql的结果,mybatis底层会把statement执行sql的结果集解析出来。用set方法封装到User对象里,因为User的变量名和数据库列名一样,所以通过反射setXx可以封装成功
   -->

    <select id="selectStudent" resultType="Do.StudentDo">
        select * from student
    </select>
</mapper>

到此接口对应的mapper配置完毕

在父pom中配置一下build标签,因为如果不配置,在项目build后接口对应的mapper文件(即上面的Studentconfig.xml)不会被放入target文件夹,那mybatis就扫描不到这个文件就报错了,所以在父pom中加入一下代码

 <!--使打包时能一起打包配置文件-->
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>

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

        </resources>
    </build>

开始进行测试

package Main;

import Dao.StudentDao;
import Do.StudentDo;
import MybatisUtils.GetSqlsession;
import org.apache.ibatis.session.SqlSession;

import java.util.List;

public class Main {
    public static void main(String[] args) {
        test();
    }


    private static void test(){
        //通过GetSqlsession直接.getsqlsession这个静态方法获得SqlSession对象
        SqlSession sqlsession = GetSqlsession.getsqlsession();
        //通过SqlSession的.getMapper方法,传入你接口的class获得接口,这里是java的反射机制
        StudentDao studentdao = sqlsession.getMapper(StudentDao.class);
        //通过接口类反射得到的接口对象studentdao直接调用其内部的方法
        List<StudentDo> students = studentdao.selectStudent();
        //遍历输出这个List
        for (StudentDo student : students) {
            System.out.println(student);
        }
        //切记!!!用完一定要把sqlsession对象关闭,不然会造成资源占用
        sqlsession.close();

    }
}

查看日志打印结果

在这里插入图片描述
数据库直接查询结果
在这里插入图片描述
到此,已经成功的使用mybatis进行查询数据库了,其它的删除、修改,增加的操作基本都是一样的。

4.踩坑记录
Communications link failure错误
需要查看mybatisconfig.xml配置文件中连接url中的useSSL是否等于false
在这里插入图片描述
备注:
useSSL=false和true的区别:
SSL(Secure Sockets Layer 安全套接字协议),在mysql进行连接的时候,如果mysql的版本是5.7之后的版本必须要加上useSSL=false,mysql5.7以及之前的版本则不用进行添加useSSL=false,会默认为false,一般情况下都是使用useSSL=false,尤其是在将项目部署到linux上时,一定要使用useSSL=false!!!,useSSL=true是进行安全验证,一般通过证书或者令牌什么的,useSSL=false就是通过账号密码进行连接,通常使用useSSL=false!!!

Unknown database 'test_dlb’错误
需要查看mybatisconfig.xml配置文件中的数据库名是否正确。
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值