目录
简介:是一款ORM框架,即对象映射关系框架
是一款关于数据库层面的框架
mybatis是一款ORM框架,即对象映射关系框架,是一款关于数据库层面的框架
官方回答:
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
想要了解更多相关的知识点可以到官网上查阅资料 MyBatis中文网
1.导入pom环境搭建
2.导入框架的配置文件
3.Mybatis相关插件安装
首先打开idea后,创建maven工程

显示build success说明项目模块新建成功
Pom.xml依赖
- <maven.compiler.source>1.8maven.compiler.source>
- <maven.compiler.target>1.8maven.compiler.target>
-
-
- <dependencies>
-
- <dependency>
- <groupId>junitgroupId>
- <artifactId>junitartifactId>
- <version>4.12version>
- <scope>testscope>
- dependency>
-
-
- <dependency>
- <groupId>javax.servletgroupId>
- <artifactId>javax.servlet-apiartifactId>
- <version>4.0.0version>
- <scope>providedscope>
- dependency>
-
-
- <dependency>
- <groupId>org.mybatisgroupId>
- <artifactId>mybatisartifactId>
- <version>3.4.5version>
- dependency>
-
-
- <dependency>
- <groupId>mysqlgroupId>
- <artifactId>mysql-connector-javaartifactId>
- <version>5.1.44version>
- dependency>
-
-
-
-
-
- <dependency>
- <groupId>org.apache.logging.log4jgroupId>
- <artifactId>log4j-coreartifactId>
- <version>2.9.1version>
- dependency>
- <dependency>
- <groupId>org.apache.logging.log4jgroupId>
- <artifactId>log4j-apiartifactId>
- <version>2.9.1version>
- dependency>
-
- <dependency>
- <groupId>org.apache.logging.log4jgroupId>
- <artifactId>log4j-webartifactId>
- <version>2.9.1version>
- dependency>
- dependencies>
-
-
-
- <resources>
-
- <resource>
- <directory>src/main/javadirectory>
- <includes>
- <include>**/*.xmlinclude>
- includes>
- resource>
-
- <resource>
- <directory>src/main/resourcesdirectory>
- <includes>
- <include>jdbc.propertiesinclude>
- <include>*.xmlinclude>
- includes>
- resource>
- resources>
-
- <plugins>
- <plugin>
- <groupId>org.mybatis.generatorgroupId>
- <artifactId>mybatis-generator-maven-pluginartifactId>
- <version>1.3.2version>
- <dependencies>
-
- <dependency>
- <groupId>mysqlgroupId>
- <artifactId>mysql-connector-javaartifactId>
- <version>5.1.44version>
- dependency>
- dependencies>
- <configuration>
- <overwrite>trueoverwrite>
- configuration>
- plugin>
- plugins>
web.xml配置
"http://xmlns.jcp.org/xml/ns/javaee" -
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-
- xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
-
- version="3.1">
Free mybatis plugin
Mybatis generator
mybatis tools
maven helper
插件详细介绍:Intellij Idea Mybatis 插件(plugin和tools插件)_yangshijin1988的博客-CSDN博客_idea mapper 插件
下载操作如下
搜索以上相关插件即可

配置mybatis.cfg.xml文件
- "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>
-
- typeAliases>
-
-
-
- <environments default="development">
- <environment id="development">
-
- <transactionManager type="jdbc"/>
-
-
-
-
-
- <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>
环境就搭建完成啦!!!
步骤:
- 安装Mybatis generator插件
- 配置generatorConfig.xml
- 配置maven运行generator命令
- 在pom中处理generatorConfig.xml不能编译问题
- "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"/>
-
-
- <classPathEntry location="D:\\initPath\\mvn_repository\\mysql\\mysql-connector-java\\5.1.44\\mysql-connector-java-5.1.44.jar"/>
-
-
- <context id="infoGuardian">
-
- <commentGenerator>
- <property name="suppressAllComments" value="true"/>
- <property name="suppressDate" value="true"/>
- commentGenerator>
-
-
- <jdbcConnection driverClass="${jdbc.driver}"
- connectionURL="${jdbc.url}" userId="${jdbc.username}" password="${jdbc.password}"/>
-
-
- <javaTypeResolver>
-
- <property name="forceBigDecimals" value="false"/>
- javaTypeResolver>
-
-
-
-
- <javaModelGenerator targetPackage="com.javaxl.model"
- targetProject="src/main/java">
-
- <property name="enableSubPackages" value="false"/>
-
- <property name="constructorBased" value="true"/>
-
- <property name="trimStrings" value="false"/>
-
- <property name="immutable" value="false"/>
- javaModelGenerator>
-
-
- <sqlMapGenerator targetPackage="com.javaxl.mapper"
- targetProject="src/main/java">
-
- <property name="enableSubPackages" value="false"/>
- sqlMapGenerator>
-
-
-
-
-
- <javaClientGenerator targetPackage="com.javaxl.mapper"
- targetProject="src/main/java" type="XMLMAPPER">
-
- <property name="enableSubPackages" value="false"/>
- javaClientGenerator>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <table schema="" tableName="t_mvc_Book" domainObjectName="Book"
- enableCountByExample="false" enableDeleteByExample="false"
- enableSelectByExample="false" enableUpdateByExample="false">
-
-
-
-
- table>
-
- context>
- generatorConfiguration>
mybatis-generator:generate -e

当点击时,打开什么也没有,然后点击add,点击maven
然后,将(mybatisgeneratorgenerate)此串代码放过来,选择需要配置的项目,点击ok即可
选中配置完成的文件
1.添加配置文件
1.1修改5.1.44的jar的路径
1.2修改实体类生成地址
1.3修改SQL对应的配置文件的生成地址
1.4修改Dao层代码生成地址
1.5指定需要生成增删改查的表
2.配置maven的mybatis逆向生成代码的命令
commond line
3.在pom文件中使用配置好的命令
当出现jar包依赖问题时,改怎么解决?
jar包冲突
以下代码为例;
<groupId>org.apache.logging.log4jgroupId> <artifactId>log4j-coreartifactId> <version>2.9.1version>例如:当你运行代码时,出现异常,首先找到以org开头的包,然后到本地仓库中找到中对应的该文件。在找到该文件里的log4j-core文件,在找到该文件下的2.9.1这个文件将其删除即可(精准删除错误jar包)就找到冲突文件的组织,将其删除,为了不多删文件,又能准确删除冲突文件。
1.sqlSession可以拿到Mapper对象
2.作为缓存使用,一级缓存
3.出于性能的考虑,采用二级缓存,二级缓存需要手动开启
SessionUtil.java类
- package com.javaxl.util;
-
- import org.apache.ibatis.session.SqlSession;
- import org.apache.ibatis.session.SqlSessionFactory;
- import org.apache.ibatis.session.SqlSessionFactoryBuilder;
-
- /**
- * @author dxy
- * @site www.javadxy.com
- * @company ds公司
- * @create 2022-08-11 19:59
- */
- 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());
- }
- }
BookService.java
- package com.javaxl.mapper;
-
- import com.javaxl.model.Book;
-
- public interface BookMapper {
- int deleteByPrimaryKey(Long id);
-
- int insert(Book record);
-
- int insertSelective(Book record);
-
- Book selectByPrimaryKey(Long id);
-
- int updateByPrimaryKeySelective(Book record);
-
- int updateByPrimaryKey(Book record);
- }
BookServiceImpl.java
需要实现BookBiz同时实现方法
- package com.javaxl.Biz.impl;
-
- import com.javaxl.Biz.BookBiz;
- import com.javaxl.mapper.BookMapper;
- import com.javaxl.model.Book;
-
- import java.text.Bidi;
-
- /**
- * @author dxy
- * @site www.javadxy.com
- * @company ds公司
- * @create 2022-08-11 20:07
- */
- public class BookBizImpl implements BookBiz {
- private BookMapper bookMapper;
-
- public BookMapper getBookMapper() {
- return bookMapper;
- }
-
- public void setBookMapper(BookMapper bookMapper) {
- this.bookMapper = bookMapper;
- }
-
- //alt+insert 快速提供set/get/toString/构造方法
- //alt+enter 快速构建实体类,填充代码的前半部分 Ctrl+1
-
- @Override
- public int deleteByPrimaryKey(Long id) {
- return bookMapper.deleteByPrimaryKey(id);
- }
-
- @Override
- public int insert(Book record) {
- return 0;
- }
-
- @Override
- public Book selectByPrimaryKey(Long id) {
- return bookMapper.selectByPrimaryKey(id);
- }
- }
最后做一个测试
- package com.javaxl.Biz.impl;
-
- import com.javaxl.Biz.BookBiz;
- import com.javaxl.mapper.BookMapper;
- import com.javaxl.model.Book;
- import com.javaxl.util.SessionUtil;
- import com.sun.xml.internal.bind.v2.model.core.ID;
- import org.apache.ibatis.session.SqlSession;
- import org.junit.After;
- import org.junit.Before;
- import org.junit.Test;
- import org.junit.runner.RunWith;
-
- import static org.junit.Assert.*;
-
- /**
- * @author dxy
- * @site www.javadxy.com
- * @company ds公司
- * @create 2022-08-11 20:15
- */
- public class BookBizImplTest {
- private BookBizImpl bookBiz;
- private SqlSession sqlSession;
-
- @Before
- public void setUp() throws Exception {
- System.out.println("初始化方法.....");
- BookBizImpl bookBiz = new BookBizImpl();
- //从工具类中拿session对象
- SqlSession sqlSession = SessionUtil.openSession();
- //从session对象中获取map对象
- BookMapper mapper = sqlSession.getMapper(BookMapper.class);
- bookBiz.setBookMapper(mapper);
- this.bookBiz = bookBiz;
-
- }
-
- @After
- public void tearDown() throws Exception {
- System.out.println("方法测试结束");
- sqlSession.commit();
- sqlSession.close();
- }
-
- @Test
- public void deleteByPrimaryKey() {
- System.out.println(bookBiz.deleteByPrimaryKey((long) 10));
- }
-
- @Test
- public void selectByPrimaryKey() {
- System.out.println("测试的业务方法");
- // System.out.println(bookBiz.getBookMapper());
- System.out.println(bookBiz.selectByPrimaryKey((long) 10));
-
- }
- }
效果图如下

分析:
有s事务:增删改
无事务:查询
结论:测试:查询,删除没问题代码就没问题
ibatis是mybatis的前身
项目开发中一般会集成日志框架
日志框架的作用:帮助程序员在开发的过程中快速的定位问题;
mybatis的测试
1.日志框架的集成的作用:排查定位问题
2.对于ORM(hibernate/mybatis/JPA/MP)框架 ,都需要注意事务的问题