Mybatis入门简介

目录

前言

一、Mybatis介绍

1. Mybatis是什么

2. Mybatis的核心思想

核心思想的表现

3. Mybatis的特点

 二、搭建Mybatis框架环境

1. 创建maven工程(步骤如下图所示)

 2. 导入相关pom依赖(pom.xml)

3. 数据库连接配置(Jdbc.properties)

4. 修改web.xml文件代码

 5. 安装Mybatis相关插件

5.1 插件的相关简介

5.2 插件的安装

Free mybatis plugin

 MyBatis Generator

 MyBatis Tools

 Maven Helper

6. 代码生成器的配置(generatorConfig.xml)

7. 利用代码生成器生成对应的代码

三、Mybatis测试增删改查功能。

1. 编写业务层代码

BookBiz接口代码

BookBizImpl实现类代码

 实体类Book.java

2. 数据库工具类

SessionUtil

 mybatis.cfg.xml文件配置

测试类Demo代码

Demo01代码

 测试结果

查看

 删除

 新增

 修改


前言

大家好,今天给大家带来一期有关Mybatis的博客分享,希望能给老铁们带来帮助和收获,也希望老铁们可以支持鼓励我。

一、Mybatis介绍

1. Mybatis是什么

MyBatis(前身为ibatis)是一种Java持久化框架,用于将数据库的操作Java对象之间的映射关系进行管理。它提供了一种简单且灵活的方式来处理数据库的访问,使开发人员能够通过编写XML配置文件或注解来定义SQL语句,并将其与Java方法进行绑定。

2. Mybatis的核心思想

MyBatis的核心思想是数据访问逻辑业务逻辑中分离出来,通过配置文件或注解来定义SQL语句,并将其与Java对象进行映射。开发人员可以使用简单的CRUD操作来访问数据库,同时还可以使用复杂的SQL查询和存储过程。

核心思想的表现

Mybatis核心思想的表现
核心思想的体现 说明
SQL与Java对象的分离 MyBatis将SQL语句与Java对象之间的映射关系进行了分离。开发人员可以通过配置文件或注解来定义SQL语句,而不需要将SQL语句直接写在Java代码中。这种分离的设计使得SQL语句可以独立于Java代码进行维护和修改,提高了代码的可维护性和可读性。
灵活的SQL编写 MyBatis允许开发人员使用原生的SQL语句,可以根据具体的业务需求编写复杂的SQL查询和操作。开发人员可以充分利用数据库的特性和优化技巧,编写高效的SQL语句,从而提高数据库访问的性能。
映射配置 MyBatis提供了强大的对象关系映射(ORM)功能,可以将查询结果自动映射到Java对象中。开发人员可以通过配置文件或注解来定义Java对象与数据库表之间的映射关系,从而简化了数据的处理和转换过程。
缓存机制 MyBatis提供了缓存机制,可以在内存中缓存查询的结果集。通过合理配置缓存策略,可以减少对数据库的访问,提高查询的性能。缓存机制可以在一定程度上解决频繁查询相同数据的性能问题。

3. Mybatis的特点

  • 灵活性:可以通过配置文件或注解来定义SQL语句,灵活地编写自己的SQL查询
  • 方便开发人员使用:MyBatis提供了简洁的API,使开发人员能够轻松地执行数据库操作。
  • 易于集成(兼容性好):MyBatis可以与各种第三方框架(如Spring)进行无缝集成。
  • 性能优化:MyBatis提供了缓存机制和批量操作等功能,可以提高数据库访问的性能。

 二、搭建Mybatis框架环境

1. 创建maven工程(步骤如下图所示)

Mybatis入门简介_第1张图片

 项目创建成功标识

Mybatis入门简介_第2张图片

 2. 导入相关pom依赖(pom.xml)




  4.0.0

  com.yx
  yx_mybatis01
  1.0-SNAPSHOT
  war

  yx_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
    
  

  
    yx_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
        
      
  

这就是利用pom.xml文件导入Mybatis依赖以及下载Mybatis的一些插件。

3. 数据库连接配置(Jdbc.properties)

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis_ssm?useUnicode=true&characterEncoding=UTF-8
jdbc.username=mybatis_ssm
jdbc.password=muyi

其中的jdbc.usernamejdbc.password是要根据自身的数据库连接的账号和密码来设置的,以上的只是案例演示而已。

4. 修改web.xml文件代码

将web.xml的版本修改为3.1的版本。

 5. 安装Mybatis相关插件

5.1 插件的相关简介

Mybatis相关插件
插件 说明

Free mybatis plugin

它为MyBatis框架提供了额外的功能和扩展。Free MyBatis Plugin可以帮助简化MyBatis的使用,并提供了一些有用的功能,如自动生成代码、动态SQL查询、分页查询等。它还支持与Spring框架的集成,使得在Spring应用中使用MyBatis更加方便。
MyBatis Generator MyBatis Generator是一个用于自动生成Java代码的工具,特别是用于生成与MyBatis框架集成的代码。它可以根据数据库表结构自动生成实体类、Mapper接口和XML映射文件,从而减少手动编写重复代码的工作量,提高开发效率。也可以根据配置文件中的设置,自定义生成的代码的结构和内容,以满足项目的需求。并且它支持多种数据库,包括MySQL、Oracle、SQL Server等。
MyBatis Tools 是一个用于辅助开发提高开发效率的工具集合。它包括了一些常用的插件和工具,可以与MyBatis框架一起使用。
Maven Helper 是一个用于辅助使用Maven构建工具的插件。Maven是一个流行的项目管理和构建工具,用于自动化构建、依赖管理和项目部署等任务。

5.2 插件的安装

Free mybatis plugin

如下图操作所示,如果未能找到一模一样的插件,就安装MyBatisX然后重启Idea即可使用。

 MyBatis Generator

 MyBatis Tools

 Maven Helper

6. 代码生成器的配置(generatorConfig.xml




    
    

    
    

    
    
        
        
            
             
        

        
        

        
        
            
            
        

        
        
        
        
            
            
            
            
            
            
            
            
        

        
        
            
            
        

        
        
        
        
        
            
            
        

        
        
        
        
        
        
        
        
        
        
        
        
        

        
  • 的路径改为mysql-connector-java-5.1.44.jar本地下载好的路径,记得复制之后的路径别忘了有两个反斜杠的。
  • 中的targetPackage是指定sql映射文件生成的位置,可以根据自身的需求进行修改。
  • 中的targetPackage是指定生成的model生成所在的包名,可以根据自身的需求进行修改。

  • 是指生成XxxMapper接口的位置路径,可以根据自身的需求进行修改。

  • 这是配置表的信息,其中schema即为数据库名、tableName为对应的数据库表、domainObjectName是要生成的实体类等等,当然配置表可设置多个也就是意味着可生成多个对应的实体类以及方法接口类。可以根据自身的需求更改对应的数据库名及数据库表名。

    7. 利用代码生成器生成对应的代码

    Mybatis入门简介_第3张图片

    三、Mybatis测试增删改查功能。

    1. 编写业务层代码

    BookBiz接口代码

    package com.yx.biz;
    
    import com.yx.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.yx.biz.Impl;
    
    import com.yx.biz.BookBiz;
    import com.yx.mapper.BookMapper;
    import com.yx.model.Book;
    
    /**
     * @author 君易--鑨
     * @site www.yangxin.com
     * @company 木易
     * @create  2023-08-21 10:15
     */
    public class BookBizImpl implements BookBiz {
    //    调用代码生成器的接口
        BookMapper bookMapper;
    
     public BookMapper getBookMapper() {
            return 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);
        }
    }
    

     实体类Book.java

    package com.yx.model;
    
    public class Book {
        private Integer bid;
    
        private String bname;
    
        private Float price;
    
        public Book(Integer bid, String bname, Float price) {
            this.bid = bid;
            this.bname = bname;
            this.price = price;
        }
    
        public Book() {
            super();
        }
    
        public Integer getBid() {
            return bid;
        }
    
        public void setBid(Integer bid) {
            this.bid = bid;
        }
    
        public String getBname() {
            return bname;
        }
    
        public void setBname(String bname) {
            this.bname = bname;
        }
    
        public Float getPrice() {
            return price;
        }
    
        public void setPrice(Float price) {
            this.price = price;
        }
    
        @Override
        public String toString() {
            return "Book{" +
                    "bid=" + bid +
                    ", bname='" + bname + '\'' +
                    ", price=" + price +
                    '}';
        }
    }
    

    2. 数据库工具类

    SessionUtil

    package com.yx.untils;
    
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    
    /**
     * @author 君易--鑨
     * @site www.yangxin.com
     * @company 木易
     * @create  2023-08-21 10:15
    *用于操作数据库 (对Mybatis进行建模)
     */
    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());
        }
    }
    

     mybatis.cfg.xml文件配置

    
    
    
        
        
    
    
        
            
        
    
        
        
            
        
    
    
        
        
            
                
                
    
                
                
                
                
                
                    
                    
                    
                    
                
            
        
    
        
            
        
    
    

    测试类Demo代码

    Demo01代码

    package com.yx.Demo;
    
    import com.yx.biz.BookBiz;
    import com.yx.biz.Impl.BookBizImpl;
    import com.yx.mapper.BookMapper;
    import com.yx.model.Book;
    import com.yx.untils.SessionUtil;
    import org.apache.ibatis.session.SqlSession;
    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;
    
    /**
     * @author 君易--鑨
     * @site www.yangxin.com
     * @company 木易
     * @create  2023-08-21 10:26
     * 测试增删改查的方法
     */
    public class Dmeo1 {
    //    实例化工具类和业务层类
        private SqlSession sqlSession;
        private BookBiz bookBiz;
    
        @Before
        public void a(){
            System.out.println("执行测试代码块之前会执行的初始化代码块......");
    //        获取session对象
           sqlSession=SessionUtil.openSession();
            BookBizImpl bookBiz=new BookBizImpl();
    //        获取BookMapper对象
            BookMapper mapper=sqlSession.getMapper(BookMapper.class);
    //        将获取到的BookMapper对象添加到bookBiz中
            bookBiz.setBookMapper(mapper);
    //        扩大作用权限
            this.bookBiz=bookBiz;
        }
    
        @After
        public void b(){
            System.out.println("执行测试代码块之后会执行的初始化代码块......");
    //   提交数据库提交事务
            sqlSession.commit();
        }
    
       @Test
    //   查看
        public void test1(){
           System.out.println("测试查看方法...");
    //       传入参数为id
           Book book=bookBiz.selectByPrimaryKey(25);
    //       打印输出
           System.out.println(book);
       }
    
        @Test
        //   删除
        public void test2(){
            System.out.println("测试删除方法...");
    //       传入参数为id
            int book=bookBiz.deleteByPrimaryKey(25);
    //       打印输出
            System.out.println(book);
        }
    
        @Test
        //   新增
        public void test3(){
            System.out.println("测试新增方法...");
    //       传入参数为book对象
            Book book=new Book();
            book.setBid(25);
            book.setBname("斗破苍穹");
            book.setPrice(25.5f);
    
            int b=bookBiz.insert(book);
    //       打印输出
            System.out.println(b);
        }
    
        @Test
        //   修改
        public void test4(){
            System.out.println("测试修改方法...");
    //       传入参数为book对象
            Book book=new Book();
            book.setBid(25);
            book.setBname("斗破苍穹");
            book.setPrice(35.5f);
    
            int b=bookBiz.updateByPrimaryKey(book);
    //       打印输出
            System.out.println(b);
        }
    
    }
    

     测试结果

    查看

    Mybatis入门简介_第4张图片

     删除

    Mybatis入门简介_第5张图片 Mybatis入门简介_第6张图片

     新增

    Mybatis入门简介_第7张图片

     修改

    Mybatis入门简介_第8张图片

     感谢老铁们的阅读与支持,希望老铁能够三连一波,这无疑是对我最大的支持。请敬请期待下期博客的分享,我们下期再见。

     Mybatis入门简介_第9张图片

    你可能感兴趣的:(Spring,Mysql,Mybatis,mybatis,java,spring)