自学内容网 自学内容网

【Mybatis】Mybatis 魔法世界探秘:从配置起航,开启数据持久化的奇幻入门之旅

目录

1.JDBC回顾

1.1JDBC编程

2.Mybatis使用

2.1什么是Mybatis

2.2Mybatis环境配置

1.引入依赖

2.lombok的操作

2.3Mybatis编程

1.数据库创建

2.创建实体类

3.配置数据库

4.Mapper持久层编写

5.单元测试

2.4常见的问题日志

1.密码错误

2.SQL语句错误

3.数据库中表不存在

4.方法名重复

 3.总结

 

📚️1.JDBC回顾

1.1JDBC编程

在应⽤分层学习时, 我们了解到web应⽤程序⼀般分为三层,即:Controller、Service、Dao .
之前的案例中,请求流程如下: 浏览器发起请求, 先请求Controller, Controller接收到请求之后, 调⽤
Service进⾏业务逻辑处理, Service再调⽤Dao, 但是Dao层的数据是Mock的, 真实的数据应该从数据库中读取.

此时我们在之前学习了关于JDBC的编程,我们能够了解到JDBC编程的复杂的特点,除了配置环境以外还有很多的操作,使得我们的操纵数据库比较麻烦

具体的代码如下所示:

public static void main(String[] args) throws SQLException {
     
        //建立数据源
        DataSource dataSource=new MysqlDataSource();
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java109?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("642364");

        //和数据库服务器建立连接  后序才有请求和响应交互
        Connection connection=dataSource.getConnection();

        //构造SQL
      
        String sql="update student set name='猪八戒' where id=1";
        //进行预处理
        PreparedStatement statement=connection.prepareStatement(sql);

        //把SQL发送给服务器
        int n=statement.executeUpdate();//影响的行数
        System.out.println("n="+n);
        System.out.println(statement);

        //最后释放资源,最后获取的资源先释放
        statement.close();
        connection.close();
    }
}

 解释:

可以看到这里的操作可以分为一下几类:

1. 创建数据库连接池 DataSource
2. 通过 DataSource 获取数据库连接 Connection
3. 编写要执⾏带 ? 占位符的 SQL 语句
4. 通过 Connection 及 SQL 创建操作命令对象 Statement
5. 替换占位符:指定要替换的数据库字段类型,占位符索引及要替换的值
6. 使⽤ Statement 执⾏ SQL 语句
7. 查询操作:返回结果集 ResultSet,更新操作:返回更新的数量
8. 处理结果集
9. 释放资源

总结:

从上述代码和操作流程可以看出,对于 JDBC 来说,整个操作⾮常的繁琐,我们不但要拼接每⼀个参数,⽽且还要按照模板代码的⽅式,⼀步步的操作数据库,并且在每次操作完,还要⼿动关闭连接等,⽽所有的这些操作步骤都需要在每个⽅法中重复书写.

所以就有了一种更高效的方法,工具mybatis;

📚️2.Mybatis使用

2.1什么是Mybatis

• MyBatis是⼀款优秀的 持久层 框架,⽤于简化JDBC的开发。

• MyBatis本是 Apache的⼀个开源项⽬iBatis,2010年这个项⽬由apache迁移到了google code,并且改名为MyBatis 。2013年11⽉迁移到Github

• 持久层:指的就是持久化操作的层, 通常指数据访问层(dao), 是⽤来操作数据库的

如下图所示:

简单来说MyBatis 是更简单完成程序和数据库交互的框架,也就是更简单的操作和读取数据库⼯具
那么直接开始mybatis的环境的配置吧~~~

2.2Mybatis环境配置

1.引入依赖

首先我们在创建项目的时候点击选择mysql驱动包以及它的farmwork如下图所示:

注意:

除了这里的数值之外还有两个依赖:spring web以及lombok如下所示:

这里的两个是基本的springboot所需要引入的依赖;

2.lombok的操作

注意的是,在新版的spring中进行了spring的升级,可能在实现@Data的时候不会帮我们重写这里的get与set函数,所以这里要进行注释的删除的操作:

 解释:

当我们完成这里的操作后可以在类中进行@Data对于变量的注解的操作,运行后再target中看到@Data反编译的文件,这里就可以看到我们@Data对于我们申明的变量的方法的重写;

2.3Mybatis编程

1.数据库创建

首先创建一个数据库,对数据进行操作;

USE mybatis_test;
-- 创建表[⽤⼾表]
DROP TABLE IF EXISTS user_info;
CREATE TABLE `user_info` (
 `id` INT ( 11 ) NOT NULL AUTO_INCREMENT,
 `username` VARCHAR ( 127 ) NOT NULL,
 `password` VARCHAR ( 127 ) NOT NULL,
 `age` TINYINT ( 4 ) NOT NULL,
 `gender` TINYINT ( 4 ) DEFAULT '0' COMMENT '1-男 2-⼥ 0-默认',
 `phone` VARCHAR ( 15 ) DEFAULT NULL,
 `delete_flag` TINYINT ( 4 ) DEFAULT 0 COMMENT '0-正常, 1-删除',
 `create_time` DATETIME DEFAULT now(),
 `update_time` DATETIME DEFAULT now() ON UPDATE now(),
 PRIMARY KEY ( `id` ) 
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4;

然后进行数据的插入的操作,但是这里小编就不再进行操作了;

最终的表的结果如下所示:

2.创建实体类

这里的初始化的属性,要和数据库中的代码是一一对应的,具体的代码如下所示:

@Data
public class UserInfo {
    private Integer id;
    private String username;
    private String password;
    private Integer age;
    private Integer gender;
    private String phone;
    private Integer deleteFlag;
    private Date createTime;
    private Date updateTime;
}

 解释:

解释通过lombok包中的@Data进行响应函数的重写的操作;

3.配置数据库

此时我们应该在配置文件中进行数据库的配置:

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding=utf8&useSSL=false
    username: root
    password: 642364
    driver-class-name: com.mysql.cj.jdbc.Driver

解释:

这里的URL就是连接我们自己配置的数据库,然后用户名是什么,我们自己设置的密码是什么,小编这里的密码就是“642364”,然后驱动包时什么;

注意:

如果使⽤ MySQL 是 5.x 之前的使⽤的是"com.mysql.jdbc.Driver",如果是⼤于 5.x 使⽤的
是“com.mysql.cj.jdbc.Driver

4.Mapper持久层编写

这里就是编写我们要对于数据库进行一定的增删改查的sql语句的编写的操作:

@Mapper
public interface UserInfoMapper {
    @Select("select username,password,age,gender from user_info")
    public List<UserInfo> queryAllUser();
}

解释:

这里就是进行数据库操作sql语句编写,这里用列表进行接收;

5.单元测试

这里就是在test包中进行测试的操作,如何进行直接生成呢?

操作如下:

点击鼠标右键,点击Generate,然后点击test最后点击生成我们需要测试的sql的操作;

然后再test类中进行数据的获取:

class UserInfoMapperTest {
    @Autowired
    private UserInfoMapper userInfoMapper;
    @Test
    void queryAllUser() {
        List<UserInfo> userInfoList=userInfoMapper.queryAllUser();
        System.out.println(userInfoList);
    }

 此时我们进行数据的打印,但是很是不好看,如下所示:

所以这里就要进行打印日志的配置文件的配置的操作:

mybatis:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

所以此时我们再次进行打印的操作可以看到如下的数据显示:

解释:

第一部分就是sql的语句对于数据库的操作;

第二部分就是传递参数的类型;

第三部分就是最后的数据库的内容的展示;

此时就很明显可以进行对比,第二种展示的方式更加的美观并且更加具有可读的特性

2.4常见的问题日志

1.密码错误

如下所示:

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding=utf8&useSSL=false
    username: root
    password: 64236
    driver-class-name: com.mysql.cj.jdbc.Driver

此时小编已经将配置文件中的数据进行了修改,此时的密码就是错误的,那么错误的日志如下所示:

解释:

可以看到此时就是通过连接数据库就是存在password的错误,大致可以判断出我们在配置文件中mysql的用户的密码是错误的;

2.SQL语句错误
@Select("select * fro user_info where id=#{id}")
    public UserInfo selectID(@Param("id") Integer id); 

可以看到此时select * from出现了错误;那么对应的错误的日志如下所示:

解释:

就是说,“你有一个错误,在你的SQL语句中”,请检查SQL语句“在fro   user_info where id=3”附近,可以看到我们写错的sql语句;

3.数据库中表不存在

 此时我们将这里的数据库中表的名字进行更改:

 @Select("select username,password,age,gender from user_info1")
    public List<UserInfo> queryAllUser();

此时就不存在这个表,对应的错误日志就是如下所示:

解释:

就是说我们这里在数据库中“mybatis_test”没有找到这个错误,不存在的表;

4.方法名重复

具体的错误代码实例如下所示:

 @Select("select username,password,age,gender from user_info")
    public List<UserInfo> queryAllUser();

    @Select("select * from user_info where id=#{id}")
    public UserInfo queryAllUser(@Param("id") Integer id); 

可以看到此时的两个方法的名称是一样的,那么就会出现一下的错误日志:

解释:

BeanCreationException 表示在 Spring 框架(通常在使用 MyBatis 与 Spring 集成时遇到该情况)创建 Bean 的过程中出现了错误。

java.lang.IllegalArgumentException 异常:
说明在 MyBatis 的映射语句(Mapped Statements)集合中已经存在了相同标识(key)的映射语句。

在 MyBatis 里,每一个 select、insert、update、delete 等操作在底层都会被当作一个映射语句来管理,并且会有一个唯一的标识,对应就是mapper的方法名;

 📚️3.总结

本期小编主要总结了关于Mybatis的简单的环境的配置,以及实现简单的Mybatis的编程操作,还分析了在编程中常见的错误日志;

🌅🌅🌅~~~~最后希望与诸君共勉,共同进步!!!


💪💪💪以上就是本期内容了, 感兴趣的话,就关注小编吧。

       😊😊  期待你的关注~~~


原文地址:https://blog.csdn.net/GGBond778/article/details/144399825

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!