MyBatis的入门级环境搭建及增删改查,详细易懂

目录

一.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"> -->
        <!-- &lt;!&ndash; 忽略列,不生成bean 字段 &ndash;&gt; -->
        <!-- &lt;!&ndash; <ignoreColumn column="FRED" /> &ndash;&gt; -->
        <!-- &lt;!&ndash; 指定列的java数据类型 &ndash;&gt; -->
        <!-- &lt;!&ndash; <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" /> &ndash;&gt; -->
        <!-- </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查询

 

 删除单个

 运行结果

 

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

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值