目录
一.mybatis的简介
二.MyBatis的环境搭建
2.1 导入pom依赖
2.2 数据库文件导入连接
2.3 修改web.xml文件
2.4 安装插件
2.5 配置文件
2.5.1 mybatis.cfg.xml文件
2.5.2 generatorConfig.xml文件
2.6 最后测试生成代码
三.MyBatis的增删改查
3.1 写service类,
3.2 工具类
3.3 模拟数据测试结果
一.mybatis的简介
MyBatis是一种持久层框架(orm框架),用于将Java对象映射到数据库表中。它提供了一种简单的方式来执行数据库操作,例如查询、插入、更新和删除。
MyBatis通过将SQL语句和Java代码分离来实现数据访问层的解耦。它使用XML或注解来描述数据库操作,并提供了丰富的API来执行这些操作。
MyBatis的核心原理是通过配置文件或注解将Java对象和数据库表进行映射。它还支持事务管理、缓存机制和动态SQL等高级功能,使得开发者能够更加方便地进行数据库操作。
它能够简化数据库访问的开发工作,提高代码的可读性和可维护性。无论是小型项目还是大型企业级应用,MyBatis都是一个值得考虑的选择。
优点介绍:
1. 简单易用:MyBatis使用简单直观的API和配置文件,使得开发人员能够快速上手并进行数据库操作。
2. 灵活性:MyBatis允许开发人员编写自定义的SQL语句,以满足各种复杂的查询需求。同时,它也支持动态SQL,可以根据不同的条件生成不同的SQL语句。
3. 易于调试:MyBatis可以将执行的SQL语句输出到日志中,方便开发人员进行调试和性能优化。 4. 缓存支持:MyBatis支持一级缓存和二级缓存,可以提高数据库访问的性能。
5. 支持多种数据库:MyBatis支持多种主流数据库,包括MySQL、Oracle、SQL Server等,方便开发人员在不同的项目中使用。
6. 与Java对象的映射:MyBatis使用XML或注解来描述Java对象与数据库表的映射关系,使得开发人员可以通过简单的配置实现对象与表之间的转换。
二.MyBatis的环境搭建
 
使用框架的步骤:导入pom依赖,配置xml文件,
2.1 导入pom依赖
这里所有完整版的,去maven官网下载即可
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.zking</groupId>
  <artifactId>mybatis01</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>
  <name>mybatis01 Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>
    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
    <dependencies>
        <!-- ********************** junit单元测试依赖 ********************** -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <!-- ********************** Java Servlet API  ********************** -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.0</version>
            <scope>provided</scope>
        </dependency>
        <!-- ********************** Mybatis依赖 ********************** -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.5</version>
        </dependency>
        <!-- ********************** Mysql JDBC驱动 ********************** -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.44</version>
        </dependency>
        <!-- **********************  日志配置  ********************** -->
        <!--记得修改mybatis.cfg.xml添加如下内容-->
        <!--<setting name="logImpl" value="LOG4J2"/>-->
        <!--核心log4j2jar包-->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.9.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.9.1</version>
        </dependency>
        <!--web工程需要包含log4j-web,非web工程不需要-->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-web</artifactId>
            <version>2.9.1</version>
        </dependency>
    </dependencies>
  <build>
    <finalName>mybatis01</finalName>
      <resources>
          <!--解决mybatis-generator-maven-plugin运行时没有将XxxMapper.xml文件放入target文件夹的问题-->
          <resource>
              <directory>src/main/java</directory>
              <includes>
                  <include>**/*.xml</include>
              </includes>
          </resource>
          <!--解决mybatis-generator-maven-plugin运行时没有将jdbc.properites文件放入target文件夹的问题-->
          <resource>
              <directory>src/main/resources</directory>
              <includes>
                  <include>jdbc.properties</include>
                  <include>*.xml</include>
              </includes>
          </resource>
      </resources>
      <plugins>
          <plugin>
              <groupId>org.mybatis.generator</groupId>
              <artifactId>mybatis-generator-maven-plugin</artifactId>
              <version>1.3.2</version>
              <dependencies>
                  <!--使用Mybatis-generator插件不能使用太高版本的mysql驱动 -->
                  <dependency>
                      <groupId>mysql</groupId>
                      <artifactId>mysql-connector-java</artifactId>
                      <version>5.1.44</version>
                  </dependency>
              </dependencies>
              <configuration>
                  <overwrite>true</overwrite>
              </configuration>
          </plugin>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
      </plugins>
  </build>
</project>
 
2.2 数据库文件导入连接

2.3 修改web.xml文件

2.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 项目。
点击File--->点击setting--->点击Plugins---->搜索框输入下载

下载之后重写启动软件

重启之后,就变成这样,已下载即可
 
2.5 配置文件
2.5.1 mybatis.cfg.xml文件
关于数据库的连接
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!-- 引入外部配置文件 -->
    <properties resource="jdbc.properties"/>
    <settings>
        <setting name="logImpl" value="LOG4J2"/>
    </settings>
    <!-- 别名 -->
    <typeAliases>
        <!--<typeAlias type="com.javaxl.model.Book" alias="Book"/>-->
    </typeAliases>
    <!-- 配置mybatis运行环境 -->
    <environments default="development">
        <environment id="development">
            <!-- type="JDBC" 代表使用JDBC的提交和回滚来管理事务 -->
            <transactionManager type="jdbc"/>
            <!-- mybatis提供了3种数据源类型,分别是:POOLED,UNPOOLED,JNDI -->
            <!-- POOLED 表示支持JDBC数据源连接池 -->
            <!-- UNPOOLED 表示不支持数据源连接池 -->
            <!-- JNDI 表示支持外部数据源连接池 -->
            <dataSource type="POOLED">
                <property name="driver"
                          value="${jdbc.driver}"/>
                <property name="url"
                          value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!--<mapper resource="com/javaxl/mapper/BookMapper.xml"/>-->
    </mappers>
</configuration>
 
2.5.2 generatorConfig.xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
<generatorConfiguration>
    <!--  引入配置文件  -->
    <properties resource="jdbc.properties"/>
    <!-- 指定数据库jdbc驱动jar包的位置 -->
    <classPathEntry location="F:\\temp\\maven_repository\\mysql\\mysql-connector-java\\5.1.44\\mysql-connector-java-5.1.44.jar"/>
    <!--  一个数据库一个context  -->
    <context id="infoGuardian">
        <!--  注释  -->
        <commentGenerator>
            <property name="suppressAllComments" value="true"/>
            <!--  是否取消注释  -->
            <property name="suppressDate" value="true"/>
            <!--  是否生成注释代时间戳  -->
        </commentGenerator>
        <!--  jdbc连接  -->
        <jdbcConnection driverClass="${jdbc.driver}" connectionURL="${jdbc.url}" userId="${jdbc.username}" password="${jdbc.password}"/>
        <!--  类型转换  -->
        <javaTypeResolver>
            <!--  是否使用bigDecimal, false可自动转化以下类型(Long, Integer, Short, etc.)  -->
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>
        <!--  01 指定javaBean生成的位置  -->
        <!--  targetPackage:指定生成的model生成所在的包名  -->
        <!--  targetProject:指定在该项目下所在的路径   -->
        <javaModelGenerator targetPackage="com.zking.model" targetProject="src/main/java">
            <!--  是否允许子包,即targetPackage.schemaName.tableName  -->
            <property name="enableSubPackages" value="false"/>
            <!--  是否对model添加构造函数  -->
            <property name="constructorBased" value="true"/>
            <!--  是否针对string类型的字段在set的时候进行trim调用  -->
            <property name="trimStrings" value="false"/>
            <!--  建立的Model对象是否 不可改变  即生成的Model对象不会有 setter方法,只有构造方法  -->
            <property name="immutable" value="false"/>
        </javaModelGenerator>
        <!--  02 指定sql映射文件生成的位置  -->
        <sqlMapGenerator targetPackage="com.zking.mapper" targetProject="src/main/java">
            <!--  是否允许子包,即targetPackage.schemaName.tableName  -->
            <property name="enableSubPackages" value="false"/>
        </sqlMapGenerator>
        <!--  03 生成XxxMapper接口  -->
        <!--  type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper对象  -->
        <!--  type="MIXEDMAPPER",生成基于注解的Java Model 和相应的Mapper对象  -->
        <!--  type="XMLMAPPER",生成SQLMap XML文件和独立的Mapper接口  -->
        <javaClientGenerator targetPackage="com.zking.mapper" targetProject="src/main/java" type="XMLMAPPER">
            <!--  是否在当前路径下新加一层schema,false路径com.oop.eksp.user.model, true:com.oop.eksp.user.model.[schemaName]  -->
            <property name="enableSubPackages" value="false"/>
        </javaClientGenerator>
        <!--  配置表信息  -->
        <!--  schema即为数据库名  -->
        <!--  tableName为对应的数据库表  -->
        <!--  domainObjectName是要生成的实体类  -->
        <!--  enable*ByExample是否生成 example类  -->
        <!-- <table schema="" tableName="t_book" domainObjectName="Book" -->
        <!-- enableCountByExample="false" enableDeleteByExample="false" -->
        <!-- enableSelectByExample="false" enableUpdateByExample="false"> -->
        <!-- <!– 忽略列,不生成bean 字段 –> -->
        <!-- <!– <ignoreColumn column="FRED" /> –> -->
        <!-- <!– 指定列的java数据类型 –> -->
        <!-- <!– <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" /> –> -->
        <!-- </table> -->
        <table schema="" tableName="t_mvc_book" domainObjectName="Book" enableCountByExample="false" enableDeleteByExample="false" enableSelectByExample="false" enableUpdateByExample="false">
            <!--  忽略列,不生成bean 字段  -->
            <!--  <ignoreColumn column="FRED" />  -->
            <!--  指定列的java数据类型  -->
            <!--  <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" />  -->
        </table>
    </context>
</generatorConfiguration> 
但是这里面的一些数据要根据自己情况而定,需要自行更改
jar包的位置

路径位置
SQL文件位置                                                                                                                                 
Mapper接口名称                                                                                                                           
     数据库表名 及实体类的名字                                                                                                     
 
2.6 最后测试生成代码
可以看到,下面报错了,没有生成代码成功,是因为版本原因,因为我的数据库是 8.0的版本,现在要我将版本换成 5.7的版本

换完之后,再次测试
 
这样,MyBatis的环境搭建就已经完美辣!!!
三.MyBatis的增删改查
3.1 写service类,
先定义一个接口 BookBiz
package com.zking.biz;
import com.zking.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);
} 
接着写一个类实现BookBiz接口
package com.zking.biz;
import com.sun.prism.impl.Disposer;
import com.zking.mapper.BookMapper;
import com.zking.model.Book;
/**
 * @author yinzi
 * @create 2023-08-19 16:13
 */
public class BookBizImpl implements BookBiz{
    private BookMapper bm;
    @Override
    public int deleteByPrimaryKey(Integer bid) {
        return bm.deleteByPrimaryKey(bid);
    }
    @Override
    public int insert(Book record) {
        return bm.insert(record);
    }
    @Override
    public int insertSelective(Book record) {
        return bm.insertSelective(record);
    }
    @Override
    public Book selectByPrimaryKey(Integer bid) {
        return bm.selectByPrimaryKey(bid);
    }
    @Override
    public int updateByPrimaryKeySelective(Book record) {
        return bm.updateByPrimaryKeySelective(record);
    }
    @Override
    public int updateByPrimaryKey(Book record) {
        return bm.updateByPrimaryKey(record);
    }
}
 
3.2 工具类
定义一个工厂类生成SqlSession
package com.zking.Utils;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
/**
 * @author yinzi
 * @create 2023-08-19 16:22
 */
public class SessionUtil {
    private static SqlSessionFactory sessionFactory;
    private static ThreadLocal<SqlSession> threadLocal = new ThreadLocal<SqlSession>();
    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 模拟数据测试结果
根据ID查询

 
删除单个

运行结果

今天介绍的内容就到这啦!!!




















