信息发布→ 登录 注册 退出

深入浅出JAVA MyBatis-快速入门

发布时间:2026-01-11

点击量:
目录
  • 创建项目前的环境搭建
  • 简介
  • 特点
  • (开始)创建Maven项目,导入依赖
    • 创建一个新的Maven项目
  • (开始)在数据库中创建表
    • 创建表详细信息
      • 从 XML 中构建 SqlSessionFactory
        • 总结:

          创建项目前的环境搭建

          本篇使用工具:

          1、JDK:jdk1.8

          2、Mysql l数据库 :mysql-5.7.31-winx64

          3、Maven 开发工具 :apache-maven-3.8.1

          4、IDEA开发工具: IntelliJ IDEA 2025.1.3 x64

          在这里我们使用 MyBatis 开发一个简单的 Java 项目完成增删改查(默认你已安装JDK和MySQL及会使用Maven和IDEA的基本操作)

          简介

          什么是 MyBatis?

          MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

          特点

          1.简单易学本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。

          2.灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。

          解除sql与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。

          (1)提供映射标签,支持对象与数据库的orm字段关系映射

          (2)提供对象关系映射标签,支持对象关系组建维护

          (3)提供xml标签,支持编写动态sql

          (开始)创建Maven项目,导入依赖

          创建一个新的Maven项目

          第一步:

          第二步:

          第三步:

          第四步

          第五步

          所需依赖

          直接放到 pom.xml中即可

          <dependencies>
                  <!--junit:测试用的-->
                  <dependency>
                      <groupId>junit</groupId>
                      <artifactId>junit</artifactId>
                      <version>4.11</version>
                      <scope>test</scope>
                  </dependency>
                  <!--    mybatis依赖-->
                  <dependency>
                      <groupId>org.mybatis</groupId>
                      <artifactId>mybatis</artifactId>
                      <version>3.5.1</version>
                  </dependency>
                  <!--    mysql驱动-->
                  <dependency>
                      <groupId>mysql</groupId>
                      <artifactId>mysql-connector-java</artifactId>
                      <version>5.1.9</version>
                  </dependency>
              </dependencies>
              <build>
              <resources>
                  <resource>
                      <directory>src/main/java</directory><!--所在目录-->
                      <includes><!--包括目录下的 .properties,.xml 文件都会扫描到-->
                          <include>**/*.properties</include>
                          <include>**/*.xml</include>
                      </includes>
                      <filtering>false</filtering>
                  </resource>
              </resources>
              </build>
          

          (开始)在数据库中创建表

          创建 users 表

          表名 :users

          userld :id
          userName : 姓名
          userword : 密码
          sex : 性别
          email :邮箱 

          创建表详细信息

          添加几条假数据

          创建实体类

          包名

          给实体类添加 有参,无参方法,get,set方法,toString方法

          package com.guanshiang.pojo;
          //实体类
          public class Users {
              private Integer userId;
              private String userName;
              private String userword;
              private String sex;
              private String email;
              public Users() {
              }
              public Users(Integer userId, String userName, String userword, String sex, String email) {
                  this.userId = userId;
                  this.userName = userName;
                  this.userword = userword;
                  this.sex = sex;
                  this.email = email;
              }
              public Integer getUserId() {
                  return userId;
              }
              public void setUserId(Integer userId) {
                  this.userId = userId;
              }
              public String getUserName() {
                  return userName;
              }
              public void setUserName(String userName) {
                  this.userName = userName;
              }
              public String getUserword() {
                  return userword;
              }
              public void setUserword(String userword) {
                  this.userword = userword;
              }
              public String getSex() {
                  return sex;
              }
              public void setSex(String sex) {
                  this.sex = sex;
              }
              public String getEmail() {
                  return email;
              }
              public void setEmail(String email) {
                  this.email = email;
              }
              @Override
              public String toString() {
                  return "Users{" +
                          "userId=" + userId +
                          ", userName='" + userName + '\'' +
                          ", userword='" + userword + '\'' +
                          ", sex='" + sex + '\'' +
                          ", email='" + email + '\'' +
                          '}';
              }
          }
          

          创建对应的接口,以及映射,xml文件

          接口:

          package com.guanshiang.mapper;
          import com.guanshiang.pojo.Users;
          import java.util.List;
          //接口 操作Users表
          public interface UsersMapper {
              //增加一条
              int addUsers(Users users);
              //删除一条
              int deleteUsersById(int id);
              //修改一条
              int updateUsers(Users users);
              //查询Users表的所有数据
              List<Users> queryUsers();
              //查询Users一条
              Users queryUsersByid(int id);
          }
          

          映射xml 文件

          <?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.guanshiang.mapper.UsersMapper">
          <!--
              select : 表示查询操作
              id:你要执行的sql语法的唯一标识,mybatis会使用这个id的值来找到要执行的sql语句
                  可以自定义,但是要求你使用接口中的方法名称。
                resultType : 表示结果类型的,是sql语句执行后得到ResultSet,遍历这个ResultSet得到java对象的类型   执行完sql语句后,返回的java对象的类型
                          值写的类型是权限类名称
           -->
              <!--查询所有-->
              <select id="queryUsers" resultType="com.guanshiang.pojo.Users">
                  select * from users
              </select>
          </mapper>
          <!--
              sql映射文件:写sql语句的,mybatis会执行这些sql
              1、指定约束文件
              <!DOCTYPE mapper
                  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
                   mybatis-3-mapper.dtd是约束文件的名称,扩展名是dtd的。
               2、约束文件的作用:现在,检查在当前文件中出现的标签,属性必须符合mybatis的要求
               3、mapper 是当前文件的根标签,必须的。
                  namepace:叫做命名空间,唯一值的,可以是自定义的字符串,
                          要求你使用dao接口的全限定名称。
               4、在当前文件中,可以使用特定的标签,表示数据库的特定操作。
                  <select>: 表示执行查询
                  <update>:表示更新数据库的操作,就是在<update>中 写的是update sql语句
                  <insert>:表示插入,放的是insert语句
                  <delete>:表示删除,执行的delete语句
          -->
          

          从 XML 中构建 SqlSessionFactory

          以下来自Mybatis官方文档

          每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。 SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先配置的 Configuration 实例来构建出 SqlSessionFactory 实例。 从 XML 文件中构建 SqlSessionFactory 的实例非常简单,建议使用类路径下的资源文 件进行配置。 但也可以使用任意的输入流(InputStream)实例,比如用文件路径字符 串或 file:// URL 构造的输入流。MyBatis 包含一个名叫 Resources 的工具类,它包含 一些实用方法,使得从类路径或其它位置加载资源文件更加容易。

          String resource = “org/mybatis/example/mybatis-config.xml”; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build (inputStream);

          XML 配置文件中包含了对 MyBatis 系统的核心设置,包括获取数据库连接实例的数据 源(DataSource)以及决定事务作用域和控制方式的事务管理器 (TransactionManager)。后面会再探讨 XML 配置文件的详细内容,这里先给出一个 简单的示例:

          创建XML配置文件

          内容如下:

          千万注意:下面连接数据库信息,要写你本地的信息。千万注意:下面连接数据库信息,要写你本地的信息。千万注意:下面连接数据库信息,要写你本地的信息。

          <!DOCTYPE configuration
                  PUBLIC "-//mybatis.org//DTD Config 3.0/EN"
                  "http://mybatis.org/dtd/mybatis-3-config.dtd">
          <configuration>
          <!--    环境配置:数据库的连接信息
                  default:必须和某个environment的id值一样。
                  告诉mybatis使用哪个数据库的连接信息,也就是访问哪个数据库
                  因为可能会有多个environment,也就是会有多个表数据,配置不同的表用不同的id
          -->
                  <environments default="mydiv">
          <!--       environment     一个数据库信息的配置,环境
                  id:一个唯一值,自定义:表示环境的名称
          -->
                      <environment id="mydiv">
          <!--
              transactionManager: mybatis的事物务型
                  type:JDBC(表示使用jdbc中的Connection对象的commit,rollback做事务处理)
          -->
                          <transactionManager type="JDBC"/>
          <!--
                  dataSource:表示数据源,连接数据库的
                      type:表示数据源的类型,POOLED表示使用连接池
          -->
                          <dataSource type="POOLED">
          <!--
              driver,user,username,password 是固定的,不能自定义。
          -->
                              <!--数据库的驱动名-->
                              <property name="driver" value="com.mysql.jdbc.Driver"/>
                              <!--连接数据库的url字符串-->
                               <property name="url" value="jdbc:mysql://localhost:3306/guan"/>
          <!--                    访问数据库的数据名称-->
                              <property name="username"   value="root"/>
          <!--                    密码-->
                               <property name="password" value="guanshiang"/>
                          </dataSource>
                      </environment>
                  </environments>
          <!--    指定 sql mapper(sql映射文件)的位置-->
                  <mappers>
          <!--       一个1mapper标签指定一个文件的位置
                      从类路径开始的路径信息。 target/clasess(类路径)
               -->
          <!--            可出现多次mapper -->
                      <mapper resource="com\guanshiang\dao\StudentDao.xml"/>
                  </mappers>
          </configuration>
          <!--
              myvatis的主配置文件:主要定义了数据库的配置信息,sql映射文件的位置。
          
              1、约束文件的说明
              <!DOCTYPE configuration
                  PUBLIC "-//mybatis.org//DTD Config 3.0/EN"
                  "http://mybatis.org/dtd/mybatis-3-config.dtd">
                  mybatis-3-config.dtd:约束文件名称
              2、configuration:根标签
          -->
          

          注意:看文件是否正确

              <mappers>
                  <mapper resource="com\guanshiang\dao\StudentDao.xml"/>
              </mappers>
          

          在测试类中测试

          在test中创建 测试类 Test01

          package com.guanshiang;
          import com.guanshiang.pojo.Users;
          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 org.junit.Test;
          import java.io.IOException;
          import java.io.InputStream;
          import java.util.List;
          public class Test01 {
              @Test
              public void test() throws IOException {
                  //访问mybatis 读取student数据
                  //1、定义mybatis主配置文件的名称,从类路径的根开始(target/clasess)
                  String config="mybatis.xml";
                  //2、读取这个config表示的文件
                  InputStream in = Resources.getResourceAsStream(config);
                  //3、创建SqlSessionFactoryBuider对象
                  SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
                  //4、创建SqlSessionFactory对象
                  SqlSessionFactory factory = builder.build(in);
                  //5、【重要】获取SqlSession对象,从SqlSessionFactory中获取SqlSession
                  SqlSession sqlSession = factory.openSession();
                  //6、【重要】指定要执行的sql语句的标识。sql映射文件中的namecapce + "." + 标签的id值
                  String sqlId = "com.guanshiang.mapper.UsersMapper"+"."+"queryUsers";
                  //7、执行sql语句,通过sqlId执行
                  List<Users> users = sqlSession.selectList(sqlId);
                  //8、输出
                  for (Users u:users){
                      System.out.println(u);
                  }
                  //9、关闭sqlSession对象
                  sqlSession.close();
              }
          }
          

          运行结果:

          Users{userId=2, userName='管世轩', userword='1234', sex='男', email='21@qq.com'}
          Users{userId=3, userName='管世盎', userword='weqrwr', sex='男', email='2722696413@qq.com'}
          Users{userId=4, userName='管世千', userword='guanshiang', sex='男', email='1234@qq.com'}
          Users{userId=10, userName='花花', userword='123456', sex='女', email='2722696413@qq.com'}
          Users{userId=11, userName='李博', userword='asdfasf', sex='男', email='2722696413@qq.com'}
          

          总体目录

          总结:

          本次没有采用Mybatis工具类等。

          如果想完成增删改查等,只需要

          先写接口,在写对应的sql映射文件.xml

          在测试类中测试即可,改变 6、7、8步骤即可

          接口已在上面写好。

          本篇就先完成一个查询。

          备注:感谢前辈们提供的学习资源,
          本片借鉴于 :MyBatis官网文档

          本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注的更多内容!

          在线客服
          服务热线

          服务热线

          4008888355

          微信咨询
          二维码
          返回顶部
          ×二维码

          截屏,微信识别二维码

          打开微信

          微信号已复制,请打开微信添加咨询详情!