编写一个MyBatis程序

编写一个MyBatis程序

一、什么是MyBatis

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

  2. MyBatis几乎避免了所有JDBC代码和手动设置参数以及获取结果集的过程

  3. MyBatis可以使用简单的XML或注解来配置和映射原生信息,将接口和Java的实体类映射成数据库中的记录

    **持久化:**将程序数据在持久状态和瞬时状态转换的机制,即把数据(内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在数据库中,或者存储在磁盘文件、XML文件中等

    JDBC就是一种持久化机制,文件IO也是一种持久化机制

    **持久层:**完成持久化工作的代码块,–> dao层

二、 为什么需要MyBatis

  1. MyBatis有助于将数据存入数据库和从数据库中取数据
  2. MyBatis是一个半自动化的ORM框架(对象关系映射)
  3. MyBatis的优点:
    1. 简单易学(我还每太学会,感觉也不怎么简单
    2. 灵活:SQL写在XML里,有利于统一管理
    3. 接触SQL与程序代码之间的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。提高了可维护性。
    4. 提供XML标签,支持编写动态SQL

三、 MyBatis程序编写

流程:搭建环境——导入MyBatis——编写代码——测试

  1. 构建数据库(MySQL)

    CREATE DATABASE `mybatis`;
    USE `mybatis`;
    DROP TABLE IF EXISTS `user`;
    CREATE TABLE `user`(
        `id` INT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY, 
        `name` VARCHAR(30) NOT NULL,
        `pwd` VARCHAR(30) NOT NULL
    )ENGINE=INNODB DEFAULT CHARSET=utf8;
    
    INSERT INTO `user` VALUE 
    (1,"Rigel","123456"),
    (2,"Grace","188520"),
    (3,"Savoki","123654");
    
  2. 新建一个Maven项目,删除src目录,导入Maven依赖(在pom.xml中)

  3. 创建一个module项目

    1. 编写配置文件

      在这里插入图片描述

      <?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核心配置文件-->
      <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/mybatis?useSSL=true&amp;userUnicode=true&amp;characterEncoding=UTF-8"/>
                      <property name="username" value="root"/>
                      <property name="password" value="xiong1424"/>
                  </dataSource>
              </environment>
          </environments>
      
          <!--每一个Mapper.xml都需要在MyBatis核心配置文件中注册!-->
          <mappers>
              <mapper resource="com/rigel/dao/UserMapper.xml" />
          </mappers>
      
      </configuration>
      
    2. 编写MyBatis工具类

      在这里插入图片描述

      package com.rigel.utils;
      
      
      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 java.io.IOException;
      import java.io.InputStream;
      
      //sqlSessionFactory --> sqlSession
      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();
              }
          }
      
          //获取SqlSession连接
          public static SqlSession getSqlSession(){
              return sqlSessionFactory.openSession();
          }
      
      }
      
      
    3. 编写代码

      1. 实体类
      package com.rigel.pojo;
      
      public class User {
          private int id;
          private String name;
          private String pwd;
      
          public User(){
          }
      
          public User(int id, String name, String pwd) {
              this.id = id;
              this.name = name;
              this.pwd = pwd;
          }
      
          public int getId() {
              return id;
          }
      
          public String getName() {
              return name;
          }
      
          public String getPwd() {
              return pwd;
          }
      
          @Override
          public String toString() {
              return "User{" +
                      "id=" + id +
                      ", name='" + name + '\'' +
                      ", pwd='" + pwd + '\'' +
                      '}';
          }
      }
      
      
      1. dao接口
      package com.rigel.dao;
      
      import com.rigel.pojo.User;
      
      import java.util.List;
      
      public interface UserDao {
          List<User> getUserList();
      }
      
      
      1. 接口实现类
      <?xml version="1.0" encoding="UTF-8" ?>
      <!DOCTYPE mapper
              PUBLIC "-//mybatis.org//DTDMapper3.0//EN"
              "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
      <!--namespace=绑定一个对应的dao/Mapper接口-->
      <mapper namespace="com.rigel.dao.UserDao">
          <!--select查询语句-->
          <select id="getUserList" resultType="com.rigel.pojo.User">
              select * from mybatis.user
          </select>
      </mapper>
      
    4. 测试

    在这里插入图片描述

    package com.rigel.dao;
    
    import com.rigel.pojo.User;
    import com.rigel.utils.MyBatisUtils;
    import org.apache.ibatis.session.SqlSession;
    import org.junit.Test;
    
    import java.util.List;
    
    public class UserDaoTest {
    
        @Test
        public void test(){
            //第一步:获取SqlSession对象
            SqlSession sqlSession = MyBatisUtils.getSqlSession();
            //第二步:执行SQL
            UserDao userDao = sqlSession.getMapper(UserDao.class);
            List<User> userList = userDao.getUserList();
    
            for (User user : userList) {
                System.out.println(user);
            }
    
            //关闭SqlSession
            sqlSession.close();
        }
    
    }
    
    

    结果:
    在这里插入图片描述


版权声明:本文为sinat_41900036原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。