目录
一.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;@Overridepublic int deleteByPrimaryKey(Integer bid) {return bm.deleteByPrimaryKey(bid);}@Overridepublic int insert(Book record) {return bm.insert(record);}@Overridepublic int insertSelective(Book record) {return bm.insertSelective(record);}@Overridepublic Book selectByPrimaryKey(Integer bid) {return bm.selectByPrimaryKey(bid);}@Overridepublic int updateByPrimaryKeySelective(Book record) {return bm.updateByPrimaryKeySelective(record);}@Overridepublic 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查询
删除单个
运行结果
今天介绍的内容就到这啦!!!