一、Mybatis入门介绍及简单案例

一、Mybatis入门介绍及案例

1、Mybaits简介

1.1、什么是Mybatis

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

  • 它内部封装了 jdbc,使开发者只需要关注 sql 语句本身,而不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁杂的过程。

  • mybatis 通过 xml 或注解的方式将要执行的各种 statement 配置起来,并通过 java 对象和 statement 中sql 的动态参数进行映射生成最终执行的 sql 语句,最后由 mybatis 框架执行 sql 并将结果映射为 java 对象并返回。

  • 采用 ORM 思想解决了实体和数据库映射的问题,对 jdbc 进行了封装,屏蔽了 jdbc api 底层访问细节,使我们不用与 jdbc api 打交道,就可以完成对数据库的持久化操作。

1.2、什么是持久化?

​ 字面理解就是将非持久化的数据也就是短暂的数据变为固定的数据,该数据不会因断电等物理状态而缺失。主要就是将内存中的对象保存到存储设备(硬盘)之中。

1.3、什么是持久层?

​ 为持久化服务,即为完成持久化而存在的“层”。—即 Data Access Object DAO 数据访问对象。

​ 一般存在于企业应用中,将一些企业数据持久化至数据库中。

1.4、什么是ORM?

​ Object Relational Mapping(对象关系映射),其主要作用是在编程中,把面向对象的概念跟数据库中表的概念对应起来。举例来说就是,我定义一个对象,那就对应着一张表,这个对象的实例,就对应着表中的一条记录。

1.5、Mybatis的优点

  • 是一个半自动的ORM框架,不会对应用程序或者数据库现有设计强加影响,且sql写在xml中,更加便于管理
  • 将sql语句与程序解耦,通过DAO层,将业务逻辑与数据访问分离。让系统更清晰,便于维护。

2、mybaits的入门案例

​ 学习Mybatis入门代码之前,我建议大家先去看一下官网的中文文档,有着非常详细的入门介绍。网址如下:https://mybatis.org/mybatis-3/zh/getting-started.html。

​ 当然在此之前,你要配置好java、maven的环境

​ 此外,我也写了详细的注释和代码,如下

  1. 写好测试sql表

    SET NAMES utf8mb4;
    SET FOREIGN_KEY_CHECKS = 0;
    
    -- ----------------------------
    -- Table structure for user
    -- ----------------------------
    DROP TABLE IF EXISTS `user`;
    CREATE TABLE `user`  (
      `user_name` varchar(40) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL,
      `password` varchar(40) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL,
      `id` int(10) NOT NULL AUTO_INCREMENT,
      PRIMARY KEY (`id`) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact;
    
    -- ----------------------------
    -- Records of user
    -- ----------------------------
    INSERT INTO `user` VALUES ('admin', 'admin123', 1);
    INSERT INTO `user` VALUES ('admin2', 'admin1234', 2);
    INSERT INTO `user` VALUES ('admin3', 'admin12345', 3);
    
    SET FOREIGN_KEY_CHECKS = 1;
    
  2. 创建maven项目,在 pom.xml 文件中添加 Mybatis、mysql、junit,如下:

    <dependencies>
        
        <dependency>
            <groupId>org.mybatisgroupId>
            <artifactId>mybatisartifactId>
            <version>3.5.2version>
        dependency>
        
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <version>5.1.47version>
        dependency>
        
        <dependency>
            <groupId>junitgroupId>
            <artifactId>junitartifactId>
            <version>3.8.1version>
        dependency>
    dependencies>
    
  3. 编写Mybatis核心配置文件 mybatis-config

    直接将官网的复制下来即可配置文件复制下来

    
    
    <configuration>
        
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC"/>
                <dataSource type="POOLED">
                    
                    <property name="driver" value="${driver}"/>
                    <property name="url" value="${url}"/>
                    <property name="username" value="${username}"/>
                    <property name="password" value="${password}"/>
                dataSource>
            environment>
        environments>
        
        <mappers>
            
            <mapper resource="org/mybatis/example/BlogMapper.xml"/>
        mappers>
    configuration>
    
  4. 编写mybatis工具类 MybatisUtils

    package com.chen.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;
    
    public class MybatisUtils {
           
        private static SqlSessionFactory sqlSessionFactory;
        static {
           
            try {
           String resource = "mybatis-config.xml";
                InputStream inputStream = Resources.getResourceAsStream(resource);
                /*创建sql工厂*/
                sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            } catch (IOException e) {
           
                e.printStackTrace(); }
        }
        //获取SqlSession连接
        public static SqlSession getSession(){
            return sqlSessionFactory.openSession(); }
    }
    
  5. 创建实体类 User

    package com.chen.domain;
    
    public class User {
           
        private int id;
        private String name;
        private String password;
    
        public User(int id, String name, String password) {
           
            this.id = id;
            this.name = name;
            this.password = password;
        }
    
        public User(){
           };
    
        @Override
        public String toString() {
           
            return "User{" +
                    "id=" + id +
                    ", name='" + name + '\'' +
                    ", password='" + password + '\'' +
                    '}';
        }
    
        public int getId() {
           
            return id;
        }
    
        public void setId(int id) {
           
            this.id = id;
        }
    
        public String getName() {
           
            return name;
        }
    
        public void setName(String name) {
           
            this.name = name;
        }
    
        public String getPassword() {
           
            return password;
        }
    
        public void setPassword(String password) {
           
            this.password = password;
        }
    }
    
  6. 编写Mapper接口 UserMapper

    import java.util.List;
    
    public interface UserMapper {
           
        /*此处的方法名要与UserMapper中的id对应*/
        public List<User> findAll();
    }
    
  7. 编写Mapper配置文件 Mapper.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
        <!--此处的命名空间为接口UserMapper.java文件-->
    <mapper namespace="com.chen.mapper.UserMapper">
        <select id="findAll" resultType="com.chen.domain.User">
            select * from user
        </select>
    </mapper>
    
  8. 编写测试类

public class UserTest {
    @Test
    public void Test(){
        SqlSession session = MybatisUtils.getSession();
        UserMapper mapper = session.getMapper(UserMapper.class);

        List<User> users = mapper.findAll();
        for (User user: users){
            System.out.println(user);
        }

        session.close();
    }
}

你可能感兴趣的:(Mybatis,mybatis,数据库,java,mysql)