mybatis入门环境搭建及CRUD

一、MyBatis介绍

1.1 MyBatis的定义

MyBatis是一个开源的Java持久化框架,它可以帮助开发人员简化数据库访问的过程。它提供了一种将SQL语句与Java代码进行映射的方式,使得开发人员可以通过简单的配置文件来定义SQL语句,而无需编写繁琐的JDBC代码。MyBatis支持多种数据库,包括MySQL、Oracle、SQL Server等。它还提供了一些高级特性,如缓存机制、动态SQL、延迟加载等,以提高应用程序的性能和灵活性。

1.2 MyBatis的作用

MyBatis的主要作用是简化Java应用程序与数据库之间的交互过程。它提供了一种将SQL语句与Java代码进行映射的方式,使得开发人员可以通过简单的配置文件来定义SQL语句,而无需编写繁琐的JDBC代码。通过使用MyBatis,开发人员可以更加方便地进行数据库操作,包括插入、更新、删除和查询数据等。此外,MyBatis还提供了一些高级特性,如缓存机制、动态SQL、延迟加载等,以提高应用程序的性能和灵活性。总的来说,MyBatis可以帮助开发人员提高开发效率,减少代码量,并且提供了灵活性和可维护性。

1.3 MyBatis的优缺点

MyBatis有以下几个优点

  1. 简化数据库访问:MyBatis提供了一种将SQL语句与Java代码进行映射的方式,使得开发人员可以通过简单的配置文件来定义SQL语句,而无需编写繁琐的JDBC代码。这样可以减少开发人员的工作量,提高开发效率。

  2. 灵活性:MyBatis支持动态SQL,可以根据不同的条件生成不同的SQL语句,从而实现灵活的数据库操作。开发人员可以根据具体需求来动态构建SQL语句,而不需要预先定义所有可能的SQL语句。

  3. 易于维护:MyBatis使用简单的XML或注解配置来定义SQL语句,这使得代码更加清晰可读,并且易于维护。开发人员可以通过修改配置文件来修改SQL语句,而不需要修改Java代码。

  4. 性能优化:MyBatis提供了缓存机制和延迟加载等高级特性,可以提高应用程序的性能。缓存机制可以减少数据库访问次数,延迟加载可以减少不必要的数据加载,从而提高系统的响应速度。

然而,MyBatis也有一些缺点

  1. 学习曲线较陡:相比于其他ORM框架,MyBatis的学习曲线可能较陡峭。开发人员需要了解SQL语句和XML或注解配置的使用,以及MyBatis的一些高级特性。

  2. 配置复杂:MyBatis的配置文件相对较复杂,需要开发人员熟悉其配置规则和语法。配置错误可能导致应用程序无法正常运行。

  3. 需要手动编写SQL语句:相比于全自动的ORM框架,MyBatis需要开发人员手动编写SQL语句。这对于一些简单的数据库操作可能会增加一些开发工作量。

综上所述,MyBatis在简化数据库访问、提供灵活性和易于维护方面具有优势,但在学习曲线较陡和配置复杂等方面存在一些缺点。开发人员在选择使用MyBatis时需要权衡其优缺点,并根据具体需求做出决策。 

二、MyBatis环境搭建

创建一个maven项目,名为mybatis01,如下:

mybatis入门环境搭建及CRUD_第1张图片

2.1 pom.xml修改

代码如下:




  4.0.0

  org.example
  mybatis01
  1.0-SNAPSHOT
  war

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

  
    1.8
    1.8
  

  
    
    
      junit
      junit
      4.12
      test
    

    
    
      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
    
  


  
    mybatis01
    
      
      
        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

其中localhost:3306是连接名称,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,进入到以下界面:

2.4.1 Free mybatis plugin

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

mybatis入门环境搭建及CRUD_第2张图片

2.4.2 Mybatis generator

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

mybatis入门环境搭建及CRUD_第3张图片

2.4.3 mybatis tools 

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

mybatis入门环境搭建及CRUD_第4张图片

2.4.4 maven helper

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

mybatis入门环境搭建及CRUD_第5张图片

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

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

2.5 mybatis.cfg.xml

在resources文件中创建mybatis.cfg.xml配置文件 ,如下:




    
    

    
        
    

    
    
        
    


    
    
        
            
            

            
            
            
            
            
                
                
                
                
            
        
    






三、Mybais的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_第6张图片

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

 3.2 BookService

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

package com.Kissship.utils;

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

/**
 * @author Kissship
 * @site www.Kissship.com
 * @company xxx公司
 * @create 2023-08-15-15:42
 */
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.Kissship.biz;

import com.Kissship.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);
}

BookBizImpl实现类:

package com.Kissship.biz.impl;

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

/**
 * @author Kissship
 * @site www.Kissship.com
 * @company xxx公司
 * @create 2023-08-20-19:54
 */
public class BookBizImpl implements BookBiz {
    private BookMapper 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日志文件





	
		
		/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
	

	
		
		
			
			
			
			
			
		

		
		
		
			
		
		
		
			
			
			
			
				
				
				
				
				
				
			
		

		
			
			
			
				
				
			
			
			
		

		
			
			
			
				
				
				
			
		

	

	
	
		
		
		

		
		
		
		
		
		


		
		
			
			
			
			
		

	

Demo1测试类:

package com.Kissship.demo;

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

/**
 * @author Kissship
 * @site www.Kissship.com
 * @company xxx公司
 * @create 2023-08-20-20:07
 */
public class Demo1 {
    private SqlSession sqlSession;
    private BookBiz bookBiz;

    @Before
    public void a(){
        System.out.println("执行测试方法之前会执行的初始化代码块(类似于前置通知)");
        sqlSession = SessionUtil.openSession();//获取session对象
        BookBizImpl 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 test01(){
        System.out.println("测试方法。。。");
        Book book = bookBiz.selectByPrimaryKey(29);//查询id为29的第二十九章节
        System.out.println(book);
    }

    @Test
    public void test02(){
        bookBiz.deleteByPrimaryKey(29);//删除id为29的第二十九章节
    }
}

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

mybatis入门环境搭建及CRUD_第7张图片

 执行其中的text02删除方法,测试结果:

为删除前的表内容:

mybatis入门环境搭建及CRUD_第8张图片

mybatis入门环境搭建及CRUD_第9张图片

 删除后的效果:

mybatis入门环境搭建及CRUD_第10张图片


最后mybatis入门环境搭建及CRUD就到这里,祝大家在敲代码的路上一路通畅!

感谢大家的观看 !

 

你可能感兴趣的:(mybatis,java,maven,spring)