Mybatis学习笔记-源自黑马程序员学习视频

JDBC简介

JDBC(Java DataBase Connectivity)是Java和数据库之间的一个桥梁,是一个规范而不是一个实现,能够执行SQL语句。它由一组用Java语言编写的类和接口组成。各种不同类型的数据库都有相应的实现,本文中的代码都是采用MySQL数据库实现的。

JDBC操作流程如下

Mybatis学习笔记-源自黑马程序员学习视频_第1张图片

JDBC操作流程分析

(1)根据AOP的设计思想,将公共的模块剥离出,让程序员更加关注业务代码。对于JDBC的操作流程
只有获取数据和结果转换在实际处理过程中可能是不一致的,其他过程是一致的,因此可以加载驱动、获取连接、释放资源,剥离出来,让程序员更加关注sql本身的功能。
(2)JDBC操作流程是需要将获取的数据手动映射POJO,增加开发量

为了解决这些问题,许多优秀ORM(模型)持久化框架应运而生,典型代表:hibernate和mybatis等,Hibernate和MyBatis的增、删、查、改.对于业务逻辑层来说大同小异,对于映射层而言Hibernate的配置不需要接口和SQL.相反MyBatis是需要的。(目前Hibernate我使用相对较少,所以本文不做介绍)

2. 什么是Mybatis

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集--------------------来自于官网。

3.Mybatis框架

首先配置Mybaits运行环境的xml文件,通过该文件创建Mybaits的会话工厂,通过Mybatis的会话工厂发起对数据库的CRUD操作,会话通过调度器执行数据库的CRUD,最后连接数据库。

Mybatis学习笔记-源自黑马程序员学习视频_第2张图片

3.Mybatis操作传入的参数

3.1 #{} 在数据库查询的时候映射成占位符

3.2 ${}在数据库查询的时候映射成对应的值

4、操作案例

4.1 数据库

CREATE TABLE `user` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(64) NOT NULL DEFAULT '', `dept` varchar(254) NOT NULL DEFAULT '', `website` varchar(254) DEFAULT '', `phone` varchar(16) NOT NULL DEFAULT '', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;

-- ---------------------------- -- Records of user -- ----------------------------

INSERT INTO `user` VALUES ('1', 'yiibai', 'Tech', 'http://www.yiibai.com', '13800009988');

原链接:https://www.yiibai.com/mybatis/install_configure.html

4.2 项目结构

Mybatis学习笔记-源自黑马程序员学习视频_第3张图片

4.2. 主要功能

4.2.1 pom文件配置

package org.mybatis.example;


import org.apache.ibatis.session.SqlSession;
import org.mybatis.mapper.UserMapper;
import org.mybatis.model.UserDO;
import org.mybatis.utils.SqlSessionUtils;


/**
 * @author : cuantianhou 2019/12/25
 */
public class SimpleDemo {

    public static void main(String[] args) {

        try {
            SqlSession sqlSession = SqlSessionUtils.getSqlSession();
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            UserDO  queryDO = new UserDO();
            queryDO.setId(1);
            queryDO = userMapper.selectByPrimaryKey(queryDO);
            System.out.println(queryDO);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

4.2.2 SqlsessionUtils

package org.mybatis.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;
import java.util.Objects;

/**
 * @author : cuantianhou 2019/12/25
 */
public class SqlSessionUtils {

    private static final String resource = "mybatis-config.xml";

    private static SqlSessionFactory sqlSessionFactory;
    private static SqlSessionFactory getSqlSessionFactory(){
        if(Objects.isNull(sqlSessionFactory )) {
            InputStream inputStream = null;
            try {
                inputStream = Resources.getResourceAsStream(resource);
                sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return sqlSessionFactory;
    }

    public static SqlSession getSqlSession(){
        return getSqlSessionFactory().openSession();
    }
}

4.2.3 自动生成mybatis中sql语句和mapper文件配置generatorConfig.xml





    

    
        
        
        
        
        
        
        
        

        
            
            
            
            
        

        
        
        

        
        
            
            
        

        
        
            
            

            
            

            
            

            
            

            
            
        

        
        
            
            
        


        
        
            
            
            
            

            
            
        

        
        

4.2.4 测试程序

package org.mybatis.example;


import org.apache.ibatis.session.SqlSession;
import org.mybatis.mapper.UserMapper;
import org.mybatis.model.UserDO;
import org.mybatis.utils.SqlSessionUtils;


/**
 * @author : cuantianhou 2019/12/25
 */
public class SimpleDemo {

    public static void main(String[] args) {

        try {
            SqlSession sqlSession = SqlSessionUtils.getSqlSession();
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            UserDO  queryDO = new UserDO();
            queryDO.setId(1);
            queryDO = userMapper.selectByPrimaryKey(queryDO);
            System.out.println(queryDO);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

4.2.5 测试结果

5、总结

         本文主要是讲解了mybatis出现的原因,mybatis的一般使用方法和mybatis的使用案例,如果本文对大家有所帮助,请点个赞。

你可能感兴趣的:(Java,Mybatis,Sql)