MyBatis简介

10 篇文章 0 订阅

1.什么是MyBatis

  • MyBatis 是一款优秀的持久层框架

  • 它支持自定义 SQL、存储过程以及高级映射。

  • MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。

  • MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

  • MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis。

  • 2013年11月迁移到Github

2.如何获得mybatis

  • maven仓库:导jar包

    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.2</version>
    </dependency>
  • GitHub:搜源码

3.持久化

数据持久化

  • 持久化就是将程序的数据在持久状态和瞬时状态转化的过程

  • 内存:断电即失

  • 数据库(jdbc),io文件持久化

  • 生活:冷藏, 罐头

为什么需要持久化?

  • 有些对象不能丢失

  • 内存太贵了

4.持久层

Dao,Service,Controller....

  • 完成持久化工作代码块

  • 层界限十分明显

5.为什么需要MyBatis

  • 帮助程序员将数据存入到数据库中

  • 方便

  • 传统的JDBC代码复杂,简化,框架,自动化

  • 不用MyBatis也可以,更容易上手

  • 使用的人多

  • 优点:

    • 简单易学:

    • 灵活:

    • 解除sql和代码的耦合:sql与代码分离,提高可维护性

    • 提供映射标签,支持对象与数据库的ORM字段关系映射

    • 提供对象关系映射标签,支持对象关系组件维护

    • 提供xml标签,支持编写动态sql

6.第一个MyBatis程序

思路:搭建环境-->导入MyBatis-->编写代码-->测试

  1. 搭建数据库环境

    CREATE DATABASE ssm;
    USE ssm;
    CREATE TABLE `user`(
    id INT(10) NOT NULL PRIMARY KEY,
    username VARCHAR(30) DEFAULT NULL,
    `password` VARCHAR(30) DEFAULT NULL
    )ENGINE=INNODB DEFAULT CHARSET=utf8;
    INSERT INTO `user`(id,username,`password`) VALUES
    (1,'张三','123456'),
    (2,'李四','666666'),
    (3,'王五','888888');
  2. 创建一个普通的maven项目(不用模板)

  3. 删除src,当作父工程

  4. 导入依赖:mysql驱动,mybatis,Junit

    <!--mysql驱动-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.47</version>
    </dependency>
    <!--mybatis-->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.2.7</version>
    </dependency>
    <!--junit-->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
  5. 创建一个模块,一个普通的maven项目

  6. 编写mybatis的核心配置文件,编写mybatis工具类

    • 核心配置文件,在src/resources下建配置文件mybatis-config.xml

      <!--configuration核心配置文件-->
      <configuration>
          <environments default="development">
              <environment id="development">
                  <transactionManager type="JDBC"/>
                  <dataSource type="POOLED">
                      <property name="driver" value="com.mysql.jdbc.Driver"/>
                      <property name="url" value="jdbc:mysql://localhost:3306/ssm?useUnicode=true&amp;characterEncoding=UTF-8"/>
                      <property name="username" value="数据库的用户名"/>
                      <property name="password" value="连接数据库的密码"/>
                  </dataSource>
              </environment>
          </environments>
      </configuration>
    • 工具类,在src/java下建工具类MybatisUtils

      public class MybatisUtils {
          private static SqlSessionFactory sqlSessionFactory;
          static {
              try {
                  //使用mybatis的第一步
                  //获取sqlSessionFactory对象
                  String resource = "mybatis-config.xml";
                  InputStream inputStream = Resources.getResourceAsStream(resource);
                  sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
          //有了 SqlSessionFactory,我们可以从中获得 SqlSession 的实例
          //SqlSession 提供了在数据库执行 SQL 命令所需的所有方法
          public static SqlSession getSqlSession(){
              return sqlSessionFactory.openSession();
          }
      }
  7. 编写代码

    • 实体类

      //使用lombok,导入lombok依赖
      @AllArgsConstructor
      @NoArgsConstructor
      @Data//set/get
      public class User{
          private int id;
          private String username;
          private String password;//名字必须和数据库表中的字段名相同
      }
    • Dao接口

      //dao=mapper
      //不需要实现类,只用建立一个配置文件,省略JDBC代码以及设置参数和获取结果集的工作
      public interface UserDao {
          List<User> getUserList();
      }
    • 接口实现类,用xml配置文件代替

      <?xml version="1.0" encoding="UTF-8" ?>
      <!DOCTYPE mapper
              PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
              "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
      <!--namespace唯一绑定UserDao接口,相当于实现了UserDao接口-->
      <mapper namespace="com.likea.dao.UserDao">
      <!--select查询语句,标签的id相当于重写UserDao中方法的名字-->
      <!--resultType返回结果的类型,需要具体地址,因为是配置文件,不然找不到-->
          <select id="getUserList" resultType="com.likea.pojo.User">
      <!--编写sql语句-->
              select * from user
          </select>
      </mapper>
  8. 测试,Junit测试,写在test/java下对应的包下

    @Test
    public void test(){
        //借用mybatis工具类,获取sqlSession
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        //通过接口.class获得mapper,从而调用方法
        UserDao mapper = sqlSession.getMapper(UserDao.class);
        List<User> userList = mapper.getUserList();
        for (User user : userList) {
            System.out.println(user);
        }
    }
  9. 可能出现的问题

    • 配置文件没有注册

    • 绑定接口错误

    • 方法名不对

    • 返回类型不对

    • maven导出资源问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

热爱编程的小洋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值