• Mybatis入门


    目录

    一,什么是mybatis

    二,mybatis环境搭建

    导入pom环境搭建

     导入相关插件

    导入框架的配置文件

    三,基于ssm逆向工程的使用

    配置 generatorConfig.xml

     配置maven运行generator命令

     安装Mybatis generator插件使用步骤总结

    补充 

    四, Mybatis增删改查案例

    sqlsession的作用

    测试逆向生成的代码是否正确


    一,什么是mybatis

    简介:是一款ORM框架,即对象映射关系框架

    是一款关于数据库层面的框架

     mybatis是一款ORM框架,即对象映射关系框架,是一款关于数据库层面的框架

    官方回答:

    MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

    想要了解更多相关的知识点可以到官网上查阅资料 MyBatis中文网

    二,mybatis环境搭建

    1.导入pom环境搭建

    2.导入框架的配置文件

    3.Mybatis相关插件安装

    首先打开idea后,创建maven工程

     显示build success说明项目模块新建成功

    导入pom环境搭建

    Pom.xml依赖

    1. <maven.compiler.source>1.8maven.compiler.source>
    2. <maven.compiler.target>1.8maven.compiler.target>
    3. <dependencies>
    4. <dependency>
    5. <groupId>junitgroupId>
    6. <artifactId>junitartifactId>
    7. <version>4.12version>
    8. <scope>testscope>
    9. dependency>
    10. <dependency>
    11. <groupId>javax.servletgroupId>
    12. <artifactId>javax.servlet-apiartifactId>
    13. <version>4.0.0version>
    14. <scope>providedscope>
    15. dependency>
    16. <dependency>
    17. <groupId>org.mybatisgroupId>
    18. <artifactId>mybatisartifactId>
    19. <version>3.4.5version>
    20. dependency>
    21. <dependency>
    22. <groupId>mysqlgroupId>
    23. <artifactId>mysql-connector-javaartifactId>
    24. <version>5.1.44version>
    25. dependency>
    26. <dependency>
    27. <groupId>org.apache.logging.log4jgroupId>
    28. <artifactId>log4j-coreartifactId>
    29. <version>2.9.1version>
    30. dependency>
    31. <dependency>
    32. <groupId>org.apache.logging.log4jgroupId>
    33. <artifactId>log4j-apiartifactId>
    34. <version>2.9.1version>
    35. dependency>
    36. <dependency>
    37. <groupId>org.apache.logging.log4jgroupId>
    38. <artifactId>log4j-webartifactId>
    39. <version>2.9.1version>
    40. dependency>
    41. dependencies>
    42. <resources>
    43. <resource>
    44. <directory>src/main/javadirectory>
    45. <includes>
    46. <include>**/*.xmlinclude>
    47. includes>
    48. resource>
    49. <resource>
    50. <directory>src/main/resourcesdirectory>
    51. <includes>
    52. <include>jdbc.propertiesinclude>
    53. <include>*.xmlinclude>
    54. includes>
    55. resource>
    56. resources>
    57. <plugins>
    58. <plugin>
    59. <groupId>org.mybatis.generatorgroupId>
    60. <artifactId>mybatis-generator-maven-pluginartifactId>
    61. <version>1.3.2version>
    62. <dependencies>
    63. <dependency>
    64. <groupId>mysqlgroupId>
    65. <artifactId>mysql-connector-javaartifactId>
    66. <version>5.1.44version>
    67. dependency>
    68. dependencies>
    69. <configuration>
    70. <overwrite>trueoverwrite>
    71. configuration>
    72. plugin>
    73. plugins>

    web.xml配置

    1. "http://xmlns.jcp.org/xml/ns/javaee"
    2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
    4. 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. "1.0" encoding="UTF-8"?>
    2. DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
    3. <configuration>
    4. <properties resource="jdbc.properties"/>
    5. <settings>
    6. <setting name="logImpl" value="LOG4J2"/>
    7. settings>
    8. <typeAliases>
    9. typeAliases>
    10. <environments default="development">
    11. <environment id="development">
    12. <transactionManager type="jdbc"/>
    13. <dataSource type="POOLED">
    14. <property name="driver"
    15. value="${jdbc.driver}"/>
    16. <property name="url"
    17. value="${jdbc.url}"/>
    18. <property name="username" value="${jdbc.username}"/>
    19. <property name="password" value="${jdbc.password}"/>
    20. dataSource>
    21. environment>
    22. environments>
    23. <mappers>
    24. <mapper resource="com/javaxl/mapper/BookMapper.xml"/>
    25. mappers>
    26. configuration>

     环境就搭建完成啦!!!

    三,基于ssm逆向工程的使用

    步骤:

    1. 安装Mybatis generator插件
    2. 配置generatorConfig.xml
    3. 配置maven运行generator命令
    4. 在pom中处理generatorConfig.xml不能编译问题

    配置 generatorConfig.xml

    1. "1.0" encoding="UTF-8" ?>
    2. DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
    3. "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
    4. <generatorConfiguration>
    5. <properties resource="jdbc.properties"/>
    6. <classPathEntry location="D:\\initPath\\mvn_repository\\mysql\\mysql-connector-java\\5.1.44\\mysql-connector-java-5.1.44.jar"/>
    7. <context id="infoGuardian">
    8. <commentGenerator>
    9. <property name="suppressAllComments" value="true"/>
    10. <property name="suppressDate" value="true"/>
    11. commentGenerator>
    12. <jdbcConnection driverClass="${jdbc.driver}"
    13. connectionURL="${jdbc.url}" userId="${jdbc.username}" password="${jdbc.password}"/>
    14. <javaTypeResolver>
    15. <property name="forceBigDecimals" value="false"/>
    16. javaTypeResolver>
    17. <javaModelGenerator targetPackage="com.javaxl.model"
    18. targetProject="src/main/java">
    19. <property name="enableSubPackages" value="false"/>
    20. <property name="constructorBased" value="true"/>
    21. <property name="trimStrings" value="false"/>
    22. <property name="immutable" value="false"/>
    23. javaModelGenerator>
    24. <sqlMapGenerator targetPackage="com.javaxl.mapper"
    25. targetProject="src/main/java">
    26. <property name="enableSubPackages" value="false"/>
    27. sqlMapGenerator>
    28. <javaClientGenerator targetPackage="com.javaxl.mapper"
    29. targetProject="src/main/java" type="XMLMAPPER">
    30. <property name="enableSubPackages" value="false"/>
    31. javaClientGenerator>
    32. <table schema="" tableName="t_mvc_Book" domainObjectName="Book"
    33. enableCountByExample="false" enableDeleteByExample="false"
    34. enableSelectByExample="false" enableUpdateByExample="false">
    35. table>
    36. context>
    37. generatorConfiguration>

     配置maven运行generator命令

    mybatis-generator:generate -e

     当点击时,打开什么也没有,然后点击add,点击maven

     然后,将(mybatisgeneratorgenerate)此串代码放过来,选择需要配置的项目,点击ok即可

     选中配置完成的文件

     安装Mybatis generator插件使用步骤总结

    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包冲突

    以下代码为例;

    1. <groupId>org.apache.logging.log4jgroupId>
    2. <artifactId>log4j-coreartifactId>
    3. <version>2.9.1version>

    例如:当你运行代码时,出现异常,首先找到以org开头的包,然后到本地仓库中找到中对应的该文件。在找到该文件里的log4j-core文件,在找到该文件下的2.9.1这个文件将其删除即可(精准删除错误jar包)就找到冲突文件的组织,将其删除,为了不多删文件,又能准确删除冲突文件。

    四, Mybatis增删改查案例

    sqlsession的作用

    1.sqlSession可以拿到Mapper对象

    2.作为缓存使用,一级缓存

    3.出于性能的考虑,采用二级缓存,二级缓存需要手动开启

     SessionUtil.java类

    1. package com.javaxl.util;
    2. import org.apache.ibatis.session.SqlSession;
    3. import org.apache.ibatis.session.SqlSessionFactory;
    4. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    5. /**
    6. * @author dxy
    7. * @site www.javadxy.com
    8. * @company ds公司
    9. * @create 2022-08-11 19:59
    10. */
    11. public class SessionUtil {
    12. private static SqlSessionFactory sessionFactory;
    13. private static ThreadLocal<SqlSession> threadLocal = new ThreadLocal<SqlSession>();
    14. static {
    15. sessionFactory = new SqlSessionFactoryBuilder().build(SessionUtil.class.getResourceAsStream("/mybatis.cfg.xml"));
    16. }
    17. public static SqlSession openSession() {
    18. SqlSession session = threadLocal.get();
    19. if (null == session) {
    20. session = sessionFactory.openSession();
    21. threadLocal.set(session);
    22. }
    23. return session;
    24. }
    25. public static void main(String[] args) {
    26. SqlSession session = openSession();
    27. System.out.println(session.getConnection());
    28. session.close();
    29. // System.out.println(session.getConnection());
    30. }
    31. }

     BookService.java

    1. package com.javaxl.mapper;
    2. import com.javaxl.model.Book;
    3. public interface BookMapper {
    4. int deleteByPrimaryKey(Long id);
    5. int insert(Book record);
    6. int insertSelective(Book record);
    7. Book selectByPrimaryKey(Long id);
    8. int updateByPrimaryKeySelective(Book record);
    9. int updateByPrimaryKey(Book record);
    10. }

    BookServiceImpl.java

    需要实现BookBiz同时实现方法

    1. package com.javaxl.Biz.impl;
    2. import com.javaxl.Biz.BookBiz;
    3. import com.javaxl.mapper.BookMapper;
    4. import com.javaxl.model.Book;
    5. import java.text.Bidi;
    6. /**
    7. * @author dxy
    8. * @site www.javadxy.com
    9. * @company ds公司
    10. * @create  2022-08-11 20:07
    11. */
    12. public class BookBizImpl implements BookBiz {
    13. private BookMapper bookMapper;
    14. public BookMapper getBookMapper() {
    15. return bookMapper;
    16. }
    17. public void setBookMapper(BookMapper bookMapper) {
    18. this.bookMapper = bookMapper;
    19. }
    20. //alt+insert 快速提供set/get/toString/构造方法
    21. //alt+enter 快速构建实体类,填充代码的前半部分 Ctrl+1
    22. @Override
    23. public int deleteByPrimaryKey(Long id) {
    24. return bookMapper.deleteByPrimaryKey(id);
    25. }
    26. @Override
    27. public int insert(Book record) {
    28. return 0;
    29. }
    30. @Override
    31. public Book selectByPrimaryKey(Long id) {
    32. return bookMapper.selectByPrimaryKey(id);
    33. }
    34. }

    最后做一个测试

     

    1. package com.javaxl.Biz.impl;
    2. import com.javaxl.Biz.BookBiz;
    3. import com.javaxl.mapper.BookMapper;
    4. import com.javaxl.model.Book;
    5. import com.javaxl.util.SessionUtil;
    6. import com.sun.xml.internal.bind.v2.model.core.ID;
    7. import org.apache.ibatis.session.SqlSession;
    8. import org.junit.After;
    9. import org.junit.Before;
    10. import org.junit.Test;
    11. import org.junit.runner.RunWith;
    12. import static org.junit.Assert.*;
    13. /**
    14. * @author dxy
    15. * @site www.javadxy.com
    16. * @company ds公司
    17. * @create  2022-08-11 20:15
    18. */
    19. public class BookBizImplTest {
    20. private BookBizImpl bookBiz;
    21. private SqlSession sqlSession;
    22. @Before
    23. public void setUp() throws Exception {
    24. System.out.println("初始化方法.....");
    25. BookBizImpl bookBiz = new BookBizImpl();
    26. //从工具类中拿session对象
    27. SqlSession sqlSession = SessionUtil.openSession();
    28. //从session对象中获取map对象
    29. BookMapper mapper = sqlSession.getMapper(BookMapper.class);
    30. bookBiz.setBookMapper(mapper);
    31. this.bookBiz = bookBiz;
    32. }
    33. @After
    34. public void tearDown() throws Exception {
    35. System.out.println("方法测试结束");
    36. sqlSession.commit();
    37. sqlSession.close();
    38. }
    39. @Test
    40. public void deleteByPrimaryKey() {
    41. System.out.println(bookBiz.deleteByPrimaryKey((long) 10));
    42. }
    43. @Test
    44. public void selectByPrimaryKey() {
    45. System.out.println("测试的业务方法");
    46. // System.out.println(bookBiz.getBookMapper());
    47. System.out.println(bookBiz.selectByPrimaryKey((long) 10));
    48. }
    49. }

     

     效果图如下

     

    测试逆向生成的代码是否正确

    分析:

    有s事务:增删改

    无事务:查询

    结论:测试:查询,删除没问题代码就没问题

    ibatis是mybatis的前身

    项目开发中一般会集成日志框架

    日志框架的作用:帮助程序员在开发的过程中快速的定位问题;

    mybatis的测试

    1.日志框架的集成的作用:排查定位问题

    2.对于ORM(hibernate/mybatis/JPA/MP)框架 ,都需要注意事务的问题

  • 相关阅读:
    【云原生 • DevOps】influxDB、cAdvisor、Grafana 工具使用详解
    LeetCode:746. 使用最小花费爬楼梯【动态规划】
    Tkinter:窗口控件配置
    1592 - Database (UVA)
    前端之jQuery
    jquery的基本使用
    前端面经 强缓存与协商缓存
    【力扣 - 只出现一次的数字】
    【软件分析第12讲-学习笔记】可满足性模理论 Satisfiability Modulo Theories
    10 # 手写 every 方法
  • 原文地址:https://blog.csdn.net/weixin_66202611/article/details/126263503