MyBatis简化JDBC开发

MyBatis是一款优秀的持久层框架,用于简化JDBC开发。                                                                          持久层是负责将数据保存到数据库的那一层代码。  框架是一个半成品软件,是一套可重用的,通用的,软件基础代码模型,在框架的基础上构建软件编写更加高效,规范,通用可扩展。

JDBC缺点:

       1、硬编码:在创建与数据库之间的连接时,会用到很多字符串,比如:用户名和密码。但很多时候用户名和密码不是一成不变的,需要改动;同时我们需要实现的需求不同时,sql语句也会不同,sql语句也需要改动。

        2、操作繁琐:sql语句中有多个占位符 ? 时,我们需要一个一个的手动去设置参数。然后在获取对象的时候,我们需要把获取的每一条信息加入相应的对象中。

MyBatis可以解决上述问题,解决办法:把与数据库连接所需的字符串比如数据库ip,用户名和密码单独写入一个配置文件中,sql语句也是单独写入另一个配置文件中,这样我们就可以同时写多个数据库连接所需要的数据,而不需要重复修改同一个,而操作繁琐的那一部分也会有相应的方法自动完成。

下面开始配置写MyBatis所需要的环境:在pom文件中添加以下依赖。


            org.mybatis
            mybatis
            3.5.5
        
        
            mysql 
            mysql-connector-java
            8.0.21
<--用于与数据库建立连接-->
        
        
            junit
            junit
            4.13.2
            test
<--用于写test测试代码-->
        
<--下面全是用于写日志的配置-->
        
            org.slf4j
            slf4j-api
            1.7.36
        
        
            ch.qos.logback
            logback-core
            1.1.7
        
        
            ch.qos.logback
            logback-access
            1.1.7
        
        
            ch.qos.logback
            logback-classic
            1.1.7
        

为了在写代码过程中能过速在接口方法和xml文件中找到对应的方法,建议大家可以在idea中下载一个MyBatisX的插件。MyBatis简化JDBC开发_第1张图片

下面开始MyBatis的正式编写:  这是MyBatis的官网,其中有我们需要的代码。有需要的可以去看看。

    入门_MyBatis中文网icon-default.png?t=N7T8https://mybatis.net.cn/getting-started.html

首先让我们在resources资源文件下创建一个xml文件,名为  mybatis-config.xml   

然后编辑该文件




    
    
    
        
            
            
            
                
                
                
                
                
                
                
                
            
        
    

    
    
        
        
    

注意上面是我连接我自己的MySql数据库,其中的url,username和password对应的value都需要改成你自己的数据库的对应数据。

mybatis-config.xml 中写明了连接数据库所需要的ip,用户名和密码,同时中指明了接口方法所在的路径。

然后创建数据库中对应的实体类,先创建一个pojo包用于存放多个实体类,在pojo包中创建对应的实体类。

package org.example.pojo;

public class brand {
    private int id;
    private String city;
    private Integer points;
    private String firstName;
    private String lastName;
    private String state;

    public String getState() {
        return state;
    }

    public void setState(String state) {
        this.state = state;
    }


    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    private String address;

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public Integer getPoints() {
        return points;
    }

    public void setPoints(Integer points) {
        this.points = points;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
}

在实体类中,声明与数据库中字段相应的属性,并写好对应的get和set方法。(数据库中的字段如first_name这样的,在实体类中用驼峰表示法firstName)。

然后写操作数据库的接口方法。先创建一个与pojo包位与同一目录下的Mapper包,Mapper包中存放了操作不同数据库表的多个接口方法。MyBatis简化JDBC开发_第2张图片

我们可以先定义一个查询所有的接口方法

public interface brandMapper {
    //查询所有
ListselectAll();

  }

各位在刚写时 selectAll下面会出现红线报错,各位不用担心,这是正常的,先不用管他。

然后继续写我们的配置文件:

   在resources资源包中创建一个Mapper包,然后在包中新建文件brandMapper.xml  MyBatis简化JDBC开发_第3张图片

注意:在创建directory目录名字为的org.example.Mapper目录时,输入包名时应将 . 符号换成 \

应该这样写 org\example\Mapper 才能创建成我们所需要的目录结构

然后编写该文件





    

namespace是为sql语句和实体类这个整体起个名字,可以随意起;但在用MyBatis代理时有要求需要改成对应的Mapper接口的全限定名。

标签中间。

然后来说一下MyBatis代理的要求:1、定义与sql映射文件同名的Mapper接口,并且将Mapper接口和sql映射文件配置在同一目录下。这个我们在写文件时已经搞完了。MyBatis简化JDBC开发_第4张图片MyBatis简化JDBC开发_第5张图片

   2、设置sql配置文件的namespace属性为Mapper接口的全限定名。这个上面也说明了,已经写好了。

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