SSM框架之Mybatis——Mybatis入门

本文详细介绍了MyBatis的背景与优势,从JDBC存在的问题出发,阐述了MyBatis如何简化数据库操作。内容包括MyBatis的快速入门,映射文件的使用,以及增删改查的基本操作。通过实例展示了如何配置核心文件、映射文件,以及如何使用SqlSession进行数据交互。此外,还探讨了MyBatis的事务管理和API使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、Mybatis的简介

1.1原始JDBC操作缺点及改进方向

1.2Mybatis简介

1.3Mybatis快速入门

二、MyBatis的映射文件概述

三、MyBatis的增删改查操作

3.1插入数据

3.2修改数据

3.3删除数据

四、MyBatis的核心配置文件概述

4.1MyBatis核心配置文件层级关系

4.2MyBatis常用配置解析

五、MyBatis的相应API

5.1SqlSession工厂构建器SqlSessionFactoryBuilder

5.2SqlSession工厂对象SqlSessionFactory

5.3SqlSession会话对象


一、Mybatis的简介

1.1原始JDBC操作缺点及改进方向

首先我们一起来看看原始的JDBC操作数据库的一般步骤,

Class.forName("com.mysql.jdbc.Diver");//注册驱动
Connection connection=DriverManager.getConnection("jdbc:mysql:///mydb1","root","3837");//获得数据库连接
PreparedStatement statement=connection.prepareStatement("select id,username,password from user");//获得statement对象
ResultSet resultSet=statement.executeQuery();//执行查询
while (resultSet.next()){//遍历结果集,对数据进行实体封装
    User user=new User();
    user.setId(resultSet.getInt("id"));
    user.setUsername(resultSet.getInt("username"));
    user.setPassword(resultSet.getInt("password"));
    System.out.println(user);
}
resultSet.close();//关闭资源
statement.close();
connection.close();

从上述代码我们可以看出原始的jdbc开发存在很多问题:

  • 数据库连接创建、释放频繁造成系统资源浪费从而影响系统性能
  • sql 语句在代码中硬编码,造成代码不易维护,实际应用 sql 变化的可能较大,sql 变动需要改变java代码。
  • 查询操作时,需要手动将结果集中的数据手动封装到实体中。插入操作时,需要手动将实体的数据设置到sql语句的占位符位置

针对上述这些问题,我们可以通过以下思路进行改进,

  • 使用数据库连接池初始化连接资源
  • 将sql语句抽取到xml配置文件中
  • 使用反射、内省等底层技术,自动将实体与表进行属性与字段的自动映射

1.2Mybatis简介

mybatis 是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程

mybatis通过xml注解的方式将要执行的各种statement配置起来,并通过java对象和statement中sql的动态参数进行映射生成最终执行的sql语句。

最后mybatis框架执行sql并将结果映射为java对象并返回。采用ORM(Object Relational Mapping,对象关系映射)思想解决了实体(对象)和数据库(表)映射的问题,对 jdbc 进行了封装,屏蔽了 jdbc api 底层访问细节,使我们不用与 jdbc api 打交道,就可以完成对数据库的持久化操作。

详细官方文档请见Mybatis官网。 

1.3Mybatis快速入门

使用Mybatis作为持久层进行开发时,其主要开发步骤如下:

  1. 添加MyBatis的坐标
  2. 创建user数据表
  3. 编写User实体类 
  4. 编写映射文件UserMapper.xml(配置sql语句)
  5. 编写核心配置文件SqlMapConfig.xml(Mybatis的核心配置)
  6. 编写测试类

第一步我们添加Mybatis的坐标,同时导入一些必要的其他依赖包坐标,

<dependencies>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.32</version>
    </dependency>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.4.6</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId><!--测试包-->
        <version>4.12</version>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId><!--日志包-->
        <version>1.2.17</version>
    </dependency>
</dependencies>

第二步在数据库中创建user表,填入一些数据(这里我们使用mydb1数据库中的user表)

第三步我们在工程中创建User实体类,生成好get和set方法,为了方便打印也重写toString方法,

class User {
    private int id;
    private String username;
    private String password;

    //省略了set、get方法和toString方法
}

第四步我们编写映射文件UserMapper.xml,在里面写好sql语句。首先在资源文件目录下新建Mapper目录,里面创建UserMapper.xml,导入mapping文件约束头,并指定映射关系。

<?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">

<!--指定sql语句的命名空间-->
<mapper namespace="userMapper">
    <!--对当前sql语句指定一个id名称,返回结果集的类型为User-->
    <select id="findAll" resultType="Domain.User">
        select * from user
    </select>
</mapper>

第五步我们编写核心文件SqlMapConfig.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>
    <!--配置数据源环境,default指定使用的默认环境-->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mydb1"/>
                <property name="username" value="root"/>
                <property name="password" value="3837"/>
            </dataSource>
        </environment>
    </environments>

    <!--加载映射文件-->
    <mappers>
        <mapper resource="Mapper/UserMapper"/&g
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值