前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mybatis框架学习(一)——我的第一个Mybatis程序

Mybatis框架学习(一)——我的第一个Mybatis程序

作者头像
RAIN7
发布2022-06-12 14:03:47
3460
发布2022-06-12 14:03:47
举报
文章被收录于专栏:RAIN7 de 编程之路

文章目录

第一个Mybatis程序

万事开头难,迈过这道坎,一切都简单!

第一个Mybatis程序一定要好好的理解执行编写代码的过程

刚开始接触一定要跟着Mybatis的官方文档入门学习,同时先不要想mybatis 和 spring的整合啥的,咱就先把mybatis单独拿出来,学习他的使用。

mybatis官方文档

https://mybatis.net.cn/

什么是Mybatis?

  咱就用自己的话说吧,学过JDBC吧,Mybatis就是JDBC的升级,是一个操作数据库的框架。jdbc繁琐的代码都不用写了,只需要写接口和对应xml文件的映射就解决了 Java代码操作数据库的操作。

(0) 搭建数据库

创建一个数据库,在该数据库中建表,并插入一条语句

代码语言:javascript
复制
create database if not exists mybatis;

use mybatis;

drop table if exists user;

create table user(
    id int primary key auto_increment,
    name varchar(30),
    pwd varchar(30)
);

insert into user values(null,"RAIN7","123456");

(1)安装Mybatis

如果使用Maven搭建项目,在pom.xml中导入 Mybatis的依赖即可,别忘记也导入数据库Mysql的依赖

Mysql 8.0

代码语言:javascript
复制
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.28</version>
        </dependency>

Mybatis

代码语言:javascript
复制
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.2</version>
        </dependency>

(2)创建 myabtis配置核心文件

创建mybatis-config的xml配置文件,作为mybatis的核心配置文件。

为啥要创建这个配置文件呢?

(1) 构建SqlSessionFactory

官方文档在这里已经说的很清楚了,我们来总结一下

每个mybatis应用都是基于SqlSessionFactory为核心的,我们要通过xml配置文件拿到 SqlSessionFory这个实例

官方文档还给了相关的代码,从配置文件中得到SqlSessionFactory实例的过程

(2)在配置文件中填入数据库连接的必要信息

  在项目中建一个xml文件作为mybatis的核心配置文件,一般以 mybatis-config.xml 命名,放在resource目录底下

代码语言:javascript
复制
<?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.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/bit/mapper/UserMapper.xml"/>
    </mappers>
</configuration>

(3)编写代码

在上述过程中已经搭好了基本的环境配置,我们开始写代码。

1.得到sqlSession对象

根据配置文件拿到SqlSessionFactory对象,在得到SqlSession对象(重要)

官方文档给了我们如何获得Sqlsession的代码

建一个util包,存放着MybatisUtil类专门获得SqlSession对象

代码语言:javascript
复制
package com.bit.util;


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 MybatisUtil {
// 写一个工具类,获得 sqlSession 对象,sqlSession对象里面又处理数据库相关数据的方法
    // 1.先获得 sqlSessionFactory 对象,才能创建sqlSession对象
            // 加载项目中的mybatis核心配置,记得可以写相对/绝对路径都行
//            输入流读取配置文件信息
//            获得sqlSessionFactory对象

    private static SqlSessionFactory sqlSessionFactory;

    static{
        try {
        
            String resource = "mybatis-config.xml";
// 输入流读取resource文件中的mybatis核心配置文件
            InputStream inputStream = Resources.getResourceAsStream(resource);
//通过SqlSessionFactoryBuild的build方法得到SqlSessionFactory对象
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static SqlSession getSqlSession(){
    // 参数如果没有的话,默认是关闭自动提交事务的
    // 参数如果设置为true的话,默认是自动提交事务的
       return sqlSessionFactory.openSession(true);
    }

}

2.建实体类pojo

之后的操作数据库得创建一个实体类

普及一个概念 pojo(Plain Ordinary Java Object)

简单的java对象也就是我们所说的实体类,与数据库中表的信息相对应

一定要注意,属性的名字得和表中的字段一样(重要)

代码语言:javascript
复制
package com.bit.pojo;

public class User {
    private int id;
    private String name;
    private String pwd;

    public User(int id, String name, String pwd) {
        this.id = id;
        this.name = name;
        this.pwd = pwd;
    }
    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", pwd='" + pwd + '\'' +
                '}';
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPwd() {
        return pwd;
    }
    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
}

3.使用接口+xml的方式操作数据库

  接口就相当于以前dao层里面的具体对某个对象实现增删改查,这里我们写一个接口,接口里面只提供增上改查方法的定义,我们不做实现,具体的实现让xml去完成

建一个mapper包,里面放 接口和xmk配置文件

实现接口

接口通常以mapper命名,这里建一个UserMapper 接口

代码语言:javascript
复制
package com.bit.mapper;

import com.bit.pojo.User;

import java.util.List;

public interface UserMapper {
    // 查询所有用户
    List<User> getUserList();
}

实现xml的配置文件

建立UserMappper.xml配置文件,与UserMapper接口搭配使用

这个xml文件是针对于这个接口的,里面用各种标签以及标签里的属性来实现具体的方法。

namespace 写的接口的全限定名(包名+类名)

  查询语句用 select标签,id写的是接口里的方法名(注意不要写错),resultType写的是返回的类型(全限定名)

代码语言:javascript
复制
<?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.bit.mapper.UserMapper">

    <select id="getUserList" resultType="com.bit.pojo.User">
        select * from mybatis.user
    </select>

</mapper>

4.注册mapper信息(重要)

把mapper标签的信息注册到核心配置文件中的mappers里面

通过这种方式 把UserMapper.xml与 mybatis-config.xml联系起来

(4)代码测试

在test目录下进行测试,路径得相同

建一个类,在这个类中写测试方法测试代码进行操作数据库

代码语言:javascript
复制
    @Test
    public void test(){
        //用工具类返回 执行数据库操作的 sqlSession 对象
        SqlSession sqlSession = MybatisUtil.getSqlSession();

        //我们Java是面向接口编程的,所以只获取到 UserMapper对象,执行里面的方法就行了
        // 但是UserMapper只是一个接口,里面的方法也没有具体的实现,所以用sqlSession.getMapper(),UserMapper与数据库就有了相关的联系
//        UserMapper就可以用 UserMappper.xml文件中的标签来实现方法

        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        List<User> user = userMapper.getUserList();
        for (User user1:user) {
            System.out.println(user1);
        }

        // 记得关闭 资源
        sqlSession.close();
    }

(5)异常问题处理

可能会因为各种问题导致查询失败,以下有几点很重要的问题

1.xml文件中不能加中文注释(很重要)

因为这个问题就会报各种莫名其妙的异常

2.配置文件没有注册,注册的时候一定要记住路径用/分开

在核心配置文件中配置 mappers

3.绑定接口错误

mappper配置文件中一定要找对对应的接口,namespace写全限定名,写的是对应的接口。

4.标签里id方法名错误、resultType类型错误、sql语句错误,全限定名

5.Maven导出文件资源失败(重要)

因为导出文件失败,导致找不到mappper.xml 的配置文件,报错。

maven可能因为过滤信息,导致xml文件无法导入,所以在pom.xml中加 代码允许文件资源过滤。

代码语言:javascript
复制
  <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.xml
                
                true
            

            
                src/main/java
                
                    **/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
        </resources>

    </build>

6.mybatis-config 中的数据库配置url要写对,jdbc驱动也要写对,mysql5.7 和8.0 还是有区别的

jdbc Diver

mysql 5.6

com.mysql.jdbc.Driver

mysql 8.0

com.mysql.cj.jdbc.Driver

一个mybatis方法的流程

核心点

1.如果用户要使用接口,那么接口得与mybatis建立联系

UserMapper userMapper = sqlSesion.getMapper(UserMapper.class)

sqlSession又通过 SqlSessionFactory 得到的

sqlSessionFactory 是通过 sqlSessionFactoryBuild.build(inputStream) 得到的

2.mapper接口方法是由对应xml文件实现的,但是xml文件也得和mybatis核心配置建立联系

在mybatis-config中注册接口xml文件中的mapper信息

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022/06/08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 第一个Mybatis程序
    • 什么是Mybatis?
      • (0) 搭建数据库
        • (1)安装Mybatis
          • (2)创建 myabtis配置核心文件
            • (3)编写代码
              • 1.得到sqlSession对象
              • 2.建实体类pojo
              • 3.使用接口+xml的方式操作数据库
              • 4.注册mapper信息(重要)
            • (4)代码测试
              • (5)异常问题处理
                • 一个mybatis方法的流程
                相关产品与服务
                数据库
                云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档