mybatis入门的环境搭建及快速完成CRUD(增删改查)

                                                 mybatis入门的环境搭建及快速完成CRUD(增删改查)_第1张图片

                                                                                      又是爱代码的一天 

一、MyBatis的介绍

( 1 ) 背景

MyBatis 的背景可以追溯到 2002 年,当时 Clinton Begin 开发了一个名为 iBATIS 的持久化框架。iBATIS 的目标是简化 JDBC 编程,提供一种更直观、易用的方式来处理数据库操作。

 

在传统的 JDBC 编程中,开发人员需要手动编写大量的重复代码,如连接数据库、创建 Statement、执行 SQL 语句、处理结果集等。这些繁琐的操作不仅增加了开发的工作量,还使代码难以维护和理解。iBATIS 通过提供一个简单易用的 API,封装了这些繁琐的操作,使得开发人员可以更专注于业务逻辑的实现。

iBATIS 的核心思想是将 SQL 语句与 Java 代码分离,使用 XML 或注解的方式来定义和管理 SQL。这样一来,SQL 语句可以更方便地修改和维护,而且可以与 Java 代码解耦,提高了代码的可读性和可维护性

随着时间的推移,iBATIS 被越来越多的开发人员所接受和使用。然而,iBATIS 的发展也面临一些挑战。比如,它的命名规范和配置方式相对复杂,不够直观;它对动态 SQL 的支持有限,不够灵活;它的插件机制不够完善,无法满足一些特定的需求。

为了解决这些问题,iBATIS 在 2010 年更名为 MyBatis,并进行了一系列的改进和扩展。MyBatis 在保留了 iBATIS 的优点的基础上,进一步增强了灵活性、可维护性和可扩展性。

MyBatis 提供了丰富的映射方式,可以将查询结果映射为 Java 对象、Map、基本类型等。它支持动态 SQL,可以根据条件动态拼接 SQL 语句,提高查询的灵活性和效率。同时,MyBatis 还提供了插件机制,开发人员可以根据实际需求编写插件,实现自己的业务逻辑。

除了 MyBatis 核心框架,还有一些扩展工具出现,进一步增强了 MyBatis 的功能和易用性。比如,MyBatis-Plus 提供了更多的 CRUD 操作和查询功能,简化了开发人员的工作;MyBatis Generator 可以根据数据库表结构自动生成代码;MyBatis Spring Boot Starter 则用于简化 MyBatis 在 Spring Boot 中的集成。

总之,MyBatis 的发展背景可以看作是对传统 JDBC 编程的一种改进和优化,它通过简化、灵活和可扩展的特性,使得开发人员可以更轻松地处理数据库操作,提高开发效率和代码质量

MyBatis 的发展背景主要有以下几个方面:

  1. 简化 JDBC 编程:在使用 JDBC 进行数据库操作时,需要手动编写大量的重复代码,如连接数据库、创建 Statement、执行 SQL 语句、处理结果集等。MyBatis 通过提供一个简单易用的 API,将这些繁琐的操作封装起来,使得开发人员可以更专注于业务逻辑的实现

  2. 提高 SQL 的可维护性:在传统的数据库开发中,SQL 语句通常散布在 Java 代码中,导致代码的可读性和可维护性较差。MyBatis 通过将 SQL 语句与 Java 代码分离,使用 XML 或注解的方式来定义和管理 SQL,使得 SQL 语句可以更方便地修改和维护

  3. 支持灵活的映射方式:MyBatis 提供了多种映射方式,可以将查询结果映射为 Java 对象、Map、基本类型等。开发人员可以根据实际需求选择不同的映射方式,灵活地处理不同的数据结构

  4. 支持动态 SQL:MyBatis 具有强大的动态 SQL 功能,可以根据条件动态拼接 SQL 语句。这使得开发人员可以根据不同的查询条件生成不同的 SQL,提高查询的灵活性和效率

  5. 可扩展性:MyBatis 提供了丰富的插件机制,可以通过自定义插件来扩展和定制框架的功能。开发人员可以根据实际需求编写插件,实现自己的业务逻辑

( 2 ) 是什么

  • MyBatis 是一个开源的持久化框架,用于简化 Java 应用程序与关系型数据库的交互。它提供了一种将 SQL 语句与 Java 代码解耦的方式,通过 XML 文件或注解来定义和管理 SQL,使得开发人员可以更方便地进行数据库操作。
  • MyBatis 的核心思想是将 SQL 语句与 Java 对象之间的映射关系定义在 XML 文件或注解中,通过执行 SQL 语句来操作数据库并将结果映射为 Java 对象。开发人员只需要编写简单的 SQL 语句和相应的映射配置,MyBatis 就可以自动完成数据库的访问和结果的映射,大大简化了数据库操作的编码工作。
  • MyBatis 提供了丰富的映射方式,可以将查询结果映射为 Java 对象、Map、基本类型等。它支持常见的 CRUD 操作(增删改查),同时还提供了动态 SQL 的支持,可以根据条件动态拼接 SQL 语句。此外,MyBatis 还提供了插件机制,可以通过编写插件来扩展和增强 MyBatis 的功能。

( 3 ) 作用

MyBatis 的主要作用是简化 Java 应用程序与关系型数据库的交互,提供了一种将 SQL 语句与 Java 代码解耦的方式,使得开发人员可以更方便地进行数据库操作。以下是 MyBatis 的主要作用:

  • 1. 数据库访问:MyBatis 提供了简洁的 API,封装了繁琐的 JDBC 操作,使得开发人员可以更专注于业务逻辑的实现。通过编写 SQL 语句和相应的映射配置,MyBatis 可以自动完成数据库的访问和结果的映射。
  • 2. SQL 映射:MyBatis 支持将查询结果映射为 Java 对象、Map、基本类型等。开发人员可以通过编写 XML 文件或注解来定义和管理 SQL 语句与 Java 对象之间的映射关系,使得数据库操作更加灵活和易于维护。
  • 3. 动态 SQL:MyBatis 支持动态 SQL,可以根据条件动态拼接 SQL 语句。开发人员可以通过条件判断、循环和迭代等方式灵活组合 SQL 片段,实现动态的查询和更新操作,提高查询的灵活性和效率。
  • 4. 事务管理:MyBatis 提供了事务管理的支持,可以通过配置来管理事务的提交、回滚和隔离级别。开发人员可以使用 MyBatis 提供的事务管理功能来确保数据库操作的一致性和完整性。
  • 5. 插件扩展:MyBatis 提供了插件机制,开发人员可以编写插件来扩展和增强 MyBatis 的功能。通过插件机制,可以在 SQL 执行前后进行拦截和增强,实现自定义的业务逻辑,例如日志记录、缓存处理等。

总之,MyBatis 主要用于简化数据库操作,提供了灵活的 SQL 映射和动态 SQL 支持,使得开发人员可以更轻松地进行数据库访问和操作。同时,MyBatis 还提供了事务管理和插件扩展等功能,满足不同的业务需求

二、MyBatis环境搭建

创建一个maven项目,名为:mybatis

mybatis入门的环境搭建及快速完成CRUD(增删改查)_第2张图片 

 

   可以根据本人的项目结构进行创建包(比较规范),当然也可以根据自己的习惯进行修改 

 2.1 pom.xml修改

之后修改pom.xml文件




  4.0.0

  org.example
  mybatis
  1.0-SNAPSHOT
  war

  mybatis 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
    
  

  
    mybatis
    
      
      
        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
        
      
  

2.2 jdbc.properties

jdbc.properties配置文件:用于输入数据库的用户密码(注意:该配置文件的首字母不能大写) 

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://47.100.191.44:3308/mybatis_ssm?useUnicode=true&characterEncoding=UTF-8
jdbc.username=test01
jdbc.password=test01

其中47.100.191.44是连接名称,mybatis_ssm是里面的数据库,username,password就是

连接的账号及密码。

2.3 web.xml

找到maven项目中webapp下WEB-INF的web.xml配置JSP文件修改为:3.1



  Archetype Created Web Application

2.4 插件下载

想更好的了解这些插件可以: 点击此处

下载这些插件前都需要先选中File,之后再点击Settings,进入到以下界面:

mybatis入门的环境搭建及快速完成CRUD(增删改查)_第3张图片

2.4.1 Free mybatis plugin

在输入框里面输入关键字即可,找到MyBatisX后点击install进行插件下载,如图:

mybatis入门的环境搭建及快速完成CRUD(增删改查)_第4张图片

 

2.4.2 Mybatis generator

输入关键字,找到Mybatis generator点击install进行插件下载,如图:

mybatis入门的环境搭建及快速完成CRUD(增删改查)_第5张图片 

2.4.3 mybatis tools

输入关键字,找到mybatis tools点击install进行插件下载,如图:

mybatis入门的环境搭建及快速完成CRUD(增删改查)_第6张图片

 

2.4.4 maven helper

输入关键字,找到maven helper点击install进行插件下载,如图:

mybatis入门的环境搭建及快速完成CRUD(增删改查)_第7张图片

这个插件的作用是查看项目里面引用的所有引用文件,由引用冲突还可以进行解决

mybatis入门的环境搭建及快速完成CRUD(增删改查)_第8张图片

 

                     下载安装这些插件后,需要idea重启才能进行使用

 2.5 mybatis.cfg.xml

在resources文件中创建mybatis.cfg.xml配置文件




    
    

    
        
    

    
    
        
    

    
    
        
            
            

            
            
            
            
            
                
                
                
                
            
        
    

    
        
    

三、MyBatis的CRUD

3.1 generatorConfig.xml

在resources文件中创建generatorConfig.xml配置文件




    
    

    
    

    
    
        
        
            
             
        

        
        

        
        
            
            
        

        
        
        
        
            
            
            
            
            
            
            
            
        

        
        
            
            
        

        
        
        
        
        
            
            
        

        
        
        
        
        
        
        
        
        
        
        
        
        

        

注意点: 

1 、

location的目录

这里的jar包目录是你本地下载maven引用文件的地址

在里面查找mysql-connector-java-5.1.44.jar的文件

2、

targetPackage中的字符串

这里要将指定生成的model在该项目中的指定包名,如果没有该包会自动创建

3、

targetPackage的字符串

这里是你想将要生成的Sql映射文件放到哪个包下,如果没有该包会自动创建

4、

targetPackage中的字符串

这里是你想将要生成的独立的Mapper接口放到哪个包下,如果没有该包会自动创建

5、

tableName中的字符串

这里是填写要自动生成的实体类对哪个数据表进行创建实体(对象)

 domainObjectName 是要生成的实体名称

如果想创建多个只需复制这段在进行粘贴

修改其中的数据表名称及实体类名称即可

在这里配置完成之后就可以自动生成增删改查的代码了

打开右侧的Maven点击我们引用的插件进行双击后将自动生成

mybatis入门的环境搭建及快速完成CRUD(增删改查)_第9张图片

   注意: 需要选中本次创建的项目进行查找该架包

3.2 BookService

创建BookService这个工具类:进行数据库访问以及SqlSession的赋值

package com.CloudJun.utils;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
/**
 * @author CloudJun
 * @create  2023-08-19 20:36
 */
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());
    }
}

3.3 接口及实现类

BookBiz接口

package com.CloudJun.biz;

import com.CloudJun.model.Book;
/**
 * @author CloudJun
 * @create  2023-08-19 20:40
 */
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);
}

BookBizImpl实现类

package com.CloudJun.biz.impl;

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

/**
 * @author CloudJun
 * @create  2023-08-19 20:41
 */
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);
    }
}

3.4 log4j2.xml

在resources文件中创建log4j2.xml配置文件





	
		
		/root/workspace/lucenedemo/logs
		/root/workspace/lucenedemo/logs/error
		/root/workspace/lucenedemo/logs/warn
		%d{yyyy-MM-dd HH:mm:ss.SSS} [%t-%L] %-5level %logger{36} - %msg%n
	

	
		
		
			
			
			
			
			
		

		
		
		
			
		
		
		
			
			
			
			
				
				
				
				
				
				
			
		

		
			
			
			
				
				
			
			
			
		

		
			
			
			
				
				
				
			
		

	

	
	
		
		
		

		
		
		
		
		
		


		
		
			
			
			
			
		

	

3.5 测试类

创建一个Demo进行方法测试

package com.CloudJun.Demo;

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

/**
 * @author CloudJun
 * @create  2023-08-19 20:36
 */
public class Demo {

    private SqlSession sqlSession;
    private BookBiz bookBiz;

    @Before
    public void Before(){
        System.out.println("方法执行前会调用(有些像前置通知的意思)");
        //数据库的连接及bookBiz的赋值
        sqlSession = SessionUtil.openSession();
        BookBizImpl bookBiz = new BookBizImpl();
        BookMapper mapper = sqlSession.getMapper(BookMapper.class);
        bookBiz.setBookMapper(mapper);
        this.bookBiz = bookBiz;
    }

    @After
    public void After(){
        System.out.println("方法执行后会调用(有些像后置通知的意思)");
        sqlSession.commit();//事务的提交
    }


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

    }

    @Test
    public void del(){
        bookBiz.deleteByPrimaryKey(28);
    }



}

执行其中的text查看方法,测试结果:

mybatis入门的环境搭建及快速完成CRUD(增删改查)_第10张图片

执行其中的del删除方法,之后我们查看数据库,测试结果: 

mybatis入门的环境搭建及快速完成CRUD(增删改查)_第11张图片

 

给我们带来的收获

学习 MyBatis 后,你可以获得以下收获:

  • 1. 提高数据库操作效率:MyBatis 封装了繁琐的 JDBC 操作,提供了简洁的 API,使得数据库操作更加方便和高效。你可以通过 MyBatis 快速编写和执行 SQL 语句,减少了手动编写和管理 SQL 的工作量,提高了数据库操作的效率。
  • 2. 简化开发流程:MyBatis 的 SQL 映射方式将 SQL 语句与 Java 代码解耦,使得开发人员可以更专注于业务逻辑的实现。你可以通过编写 XML 文件或注解来管理 SQL 语句与 Java 对象之间的映射关系,简化了开发流程,提高了开发效率。
  • 3. 提高代码质量:MyBatis 的 SQL 映射方式和动态 SQL 支持使得数据库操作更加灵活和易于维护。你可以根据业务需求动态拼接 SQL 语句,减少了冗余代码的编写。同时,通过将 SQL 语句和 Java 代码解耦,你可以更好地组织和管理代码,提高了代码的可读性和可维护性。
  • 4. 增强功能扩展能力:MyBatis 提供了插件机制,你可以编写插件来扩展和增强 MyBatis 的功能。通过插件机制,你可以在 SQL 执行前后进行拦截和增强,实现自定义的业务逻辑。这使得你可以根据具体需求扩展 MyBatis 的功能,满足特定的业务需求。
  • 5. 掌握常用持久化框架:MyBatis 是目前广泛使用的 Java 持久化框架之一,学习 MyBatis 可以帮助你掌握常用的持久化框架。这对于从事 Java 后端开发的人员来说是一项重要的技能,能够提升你的就业竞争力。

 

总之,学习 MyBatis 可以带给你数据库操作效率的提升、开发流程的简化、代码质量的提高、功能扩展能力的增强,同时也能够掌握常用的持久化框架,为你的职业发展带来积极的影响

 mybatis入门的环境搭建及快速完成CRUD(增删改查)_第12张图片

你可能感兴趣的:(mybatis,java,开发语言,intellij-idea,maven,tomcat)