MyBatis入门及增删改查

目录

MyBatis是什么

MyBatis的作用

 MyBatis的优缺点

优点

缺点

MyBatis的环境搭建

pom.xml

连接数据库

 修改web.xml文件

 安装插件

 配置文件

 MyBatis的增删改查


MyBatis是什么

MyBatis 是一个开源、轻量级的数据持久化框架,是 JDBC 和 Hibernate 的替代方案。MyBatis 内部封装了 JDBC,简化了加载驱动、创建连接、创建 statement 等繁杂的过程,开发者只需要关注 SQL 语句本身。

MyBatis的作用

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

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

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

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

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

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

 MyBatis的优缺点

优点

  • MyBatis 是免费且开源的。
  • 与 JDBC 相比,减少了 50% 以上的代码量。
  • MyBatis 是最简单的持久化框架,小巧并且简单易学。
  • MyBatis 相当灵活,不会对应用程序或者数据库的现有设计强加任何影响,SQL 写在 XML 中,和程序逻辑代码分离,降低耦合度,便于同一管理和优化,提高了代码的可重用性。
  • 提供 XML 标签,支持编写动态 SQL 语句。
  • 提供映射标签,支持对象与数据库的 ORM 字段关系映射。
  • 支持存储过程。MyBatis 以存储过程的形式封装 SQL,可以将业务逻辑保留在数据库之外,增强应用程序的可移植性、更易于部署和测试。

缺点

  • 编写 SQL 语句工作量较大,对开发人员编写 SQL 语句的功底有一定要求。
  • SQL 语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。

MyBatis的环境搭建

首先先导入pom文件,再配置xml文件

pom.xml




  4.0.0

  com.xiaoxu
  mybstis01
  1.0-SNAPSHOT
  war

  mybstis01 Maven Webapp
  
  http://www.example.com

  
    1.8
    1.8
  

  
    
    
      junit
      junit
      4.12

    

    
    
      javax.servlet
      javax.servlet-api
      4.0.0
      provided
    

    
    
      org.mybatis
      mybatis
      3.4.5
    

    
    
      mysql
      mysql-connector-java
      5.1.44
    

    
    
    
    
    
      org.apache.logging.log4j
      log4j-core
      2.9.1
    
    
      org.apache.logging.log4j
      log4j-api
      2.9.1
    
    
    
      org.apache.logging.log4j
      log4j-web
      2.9.1
    
  

  
    mybstis01
    
      
      
        src/main/java
        
          **/*.xml
        
      
      
      
        src/main/resources
        
          jdbc.properties
          *.xml
        
      
    
      
        
          org.mybatis.generator
          mybatis-generator-maven-plugin
          1.3.2
          
            
            
              mysql
              mysql-connector-java
              5.1.44
            
          
          
            true
          
        
        
          maven-clean-plugin
          3.1.0
        
        
        
          maven-resources-plugin
          3.0.2
        
        
          maven-compiler-plugin
          3.8.0
        
        
          maven-surefire-plugin
          2.22.1
        
        
          maven-war-plugin
          3.2.2
        
        
          maven-install-plugin
          2.5.2
        
        
          maven-deploy-plugin
          2.8.2
        
      
  

连接数据库

MyBatis入门及增删改查_第1张图片

 修改web.xml文件

MyBatis入门及增删改查_第2张图片

 安装插件

下载要下载的四个插件

MyBatis入门及增删改查_第3张图片

 MyBatis入门及增删改查_第4张图片​​​​​​​

      Free mybatis plugin:

                        有以下作用:  1.注解支持 

                                                2.XML映射文件支持 

                                                3. SQL语句智能提示  

                                                4. 代码生成器 

                                                5. 数据库连接和查询

Free MyBatis Plugin通过提供丰富的功能和工具,简化了  MyBatis开发过程中的各种操作,提高了开发效率和代码质量。

  Mybatis generator:

                      有以下作用:1. 自动生成实体类

                                            2. 自动生成Mapper接口(包含了常用的增删改查方法)

                                            3. 生成XML映射文件(包含SQL语句的定义和参数映射关系)

                                            4. 生成的代码可自定义

MyBatis Generator可以根据数据库表结构自动生成CRUD代码,减少手动编写重复代码的工作量,提高开发效率和代码质量。同时,生成的代码可根据需求进行自定义修改和扩展,以满足具体的业务需求

 

           mybatis tools:

                            有以下作用:1. 代码生成(生成对应的实体类、Mapper接口和XML映射)

                                                  2. SQL语句编辑和调试

                                                  3. SQL语句执行和结果查看

                                                  4. 自动生成SQL语句

MyBatis Tools是一个集成在IDE中的插件,提供了一系列辅助开发的功能,如代码生成、SQL语句编辑和调试、SQL语句执行和结果查看等

                maven helper :

                           有以下作用:1. 依赖架包分析

                                                 2. 快速搜索依赖

                                                 3. 优化依赖

                                                 4. 自动导入依赖

                帮助开发人员更方便地管理和调试 Maven 项目。

 配置文件

mybatis.cfg.xml




    
    

    
        
    

    
    
        
    


    
    
        
            
            

            
            
            
            
            
                
                
                
                
            
        
    

    
        
    

 generatorConfig.xml




    
    

    
    

    
    
        
        
            
             
        

        
        

        
        
            
            
        

        
        
        
        
            
            
            
            
            
            
            
            
        

        
        
            
            
        

        
        
        
        
        
            
            
        

        
        
        
        
        
        
        
        
        
        
        
        
        

        

最后就是生成代码

MyBatis入门及增删改查_第5张图片

 MyBatis入门及增删改查_第6张图片

 这样子,我们的坏境就搭建完成啦!!!!!!

 MyBatis的增删改查

先定义一个Book接口

package com.xiaoxu.biz;

import com.xiaoxu.mapper.BookMapper;
import com.xiaoxu.model.Book;

public interface BookBiz {
    int deleteByPrimaryKey(Integer bid);

    int insert(Book record);

    int insertSelective(Book record);

    Book selectByPrimaryKey(Integer bid);

    int updateByPrimaryKeySelective(Book record);

    int updateByPrimaryKey(Book record);

    void setBookMapper(BookMapper mapper);
}

再写一个类实现接口

package com.xiaoxu.biz.impl;

import com.xiaoxu.biz.BookBiz;
import com.xiaoxu.mapper.BookMapper;
import com.xiaoxu.model.Book;

/**
 * @author小徐
 * @site www.veryedu.cn
 * @company xu集团
 * @create 2023-08-20 16:02
 */
public class BookBizImpl implements BookBiz {
private BookMapper bookMapper;

    public BookMapper getBookMapper() {
        return bookMapper;
    }

    public void setBookMapper(BookMapper bookMapper) {
        this.bookMapper = bookMapper;
    }

    @Override
    public int deleteByPrimaryKey(Integer bid) {
        return bookMapper.deleteByPrimaryKey(bid);
    }

    @Override
    public int insert(Book record) {
        return bookMapper.insert(record);
    }

    @Override
    public int insertSelective(Book record) {
        return bookMapper.insertSelective(record);
    }

    @Override
    public Book selectByPrimaryKey(Integer bid) {
        return bookMapper.selectByPrimaryKey(bid);
    }

    @Override
    public int updateByPrimaryKeySelective(Book record) {
        return bookMapper.updateByPrimaryKeySelective(record);
    }

    @Override
    public int updateByPrimaryKey(Book record) {
        return bookMapper.updateByPrimaryKey(record);
    }
}

再定义一个工厂类生成SqlSession

package com.xiaoxu.utils;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

/**
 * @author小徐
 * @site www.veryedu.cn
 * @company xu集团
 * @create 2023-08-20 16:12
 */
public class SessionUtil {
    private static SqlSessionFactory sessionFactory;
    private static ThreadLocal threadLocal = new ThreadLocal();
    static {
        sessionFactory = new SqlSessionFactoryBuilder().build(SessionUtil.class.getResourceAsStream("/mybatis.cfg.xml"));
    }

    public static SqlSession openSession() {
        SqlSession session = threadLocal.get();
        if (null == session) {
            session = sessionFactory.openSession();
            threadLocal.set(session);
        }
        return session;
    }

    public static void main(String[] args) {
        SqlSession session = openSession();
        System.out.println(session.getConnection());
        session.close();
//        System.out.println(session.getConnection());
    }
}

最后写我们测试类

package com.xiaoxu.demo;

import com.xiaoxu.biz.BookBiz;
import com.xiaoxu.biz.impl.BookBizImpl;
import com.xiaoxu.mapper.BookMapper;
import com.xiaoxu.model.Book;
import com.xiaoxu.utils.SessionUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

/**
 * @author小徐
 * @site www.veryedu.cn
 * @company xu集团
 * @create 2023-08-20 16:16
 */
public class demo1 {

    private SqlSession sqlSession;
    private BookBiz bookBiz;

    @Before
    public void a(){
        System.out.println("执行测试方法之前会执行的初始化代码块");
        sqlSession = SessionUtil.openSession();
        BookBiz bookBiz = new BookBizImpl();
        BookMapper mapper = sqlSession.getMapper(BookMapper.class);
        bookBiz.setBookMapper(mapper);
        this.bookBiz = bookBiz;
    }

    @After
    public void b(){
        System.out.println("执行测试方法之后会执行");
        sqlSession.commit();
    }

    @Test
    public void Test1(){
        System.out.println("测试方法");
     Book book = bookBiz.selectByPrimaryKey(30);
        System.out.println(book);
    }

    @Test
    public void test2(){
        bookBiz.deleteByPrimaryKey(25);
    }
}

测试结果

MyBatis入门及增删改查_第7张图片MyBatis入门及增删改查_第8张图片

 MyBatis入门及增删改查_第9张图片

 MyBatis入门及增删改查_第10张图片

 ok,今天就到这里了!!!!! 

你可能感兴趣的:(mybatis)