• Mybatis入门


    目录

    一、mybatis简介

    二、搭建mybatis框架环境

    1.导入pom依赖

     2.导入框架的配置文件

     安装插件

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

    Mybatis generator插件使用步骤

    1.添加配置文件

    1.1.修改5.1.44的jar包路径

     1.2.修改实体类生成地址

     1.3.修改SQL对应的配置文件的生成地址

    1.4.修改Dao层代码的生成地址 

     1.5.指定需要生成增删改查代码对应的表

    配置maven运行generator命令

     增加命令

    添加命令行 

    执行命令

    四、Mybatis增删改查案例 

    sqlSession的作用

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

    测试

    添加日志框架


    一、mybatis简介

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

    ORM:Object对象 reference关系 Mapping映射

    官网:MyBatis中文网

    二、搭建mybatis框架环境

    1.导入pom依赖

    创建一个Maven项目,再导入pom依赖

    1. <properties>
    2. <maven.compiler.source>1.8maven.compiler.source>
    3. <maven.compiler.target>1.8maven.compiler.target>
    4. properties>
    5. <dependencies>
    6. <dependency>
    7. <groupId>junitgroupId>
    8. <artifactId>junitartifactId>
    9. <version>4.12version>
    10. <scope>testscope>
    11. dependency>
    12. <dependency>
    13. <groupId>javax.servletgroupId>
    14. <artifactId>javax.servlet-apiartifactId>
    15. <version>4.0.0version>
    16. <scope>providedscope>
    17. dependency>
    18. <dependency>
    19. <groupId>org.mybatisgroupId>
    20. <artifactId>mybatisartifactId>
    21. <version>3.4.5version>
    22. dependency>
    23. <dependency>
    24. <groupId>mysqlgroupId>
    25. <artifactId>mysql-connector-javaartifactId>
    26. <version>5.1.44version>
    27. dependency>
    28. <dependency>
    29. <groupId>org.apache.logging.log4jgroupId>
    30. <artifactId>log4j-coreartifactId>
    31. <version>2.9.1version>
    32. dependency>
    33. <dependency>
    34. <groupId>org.apache.logging.log4jgroupId>
    35. <artifactId>log4j-apiartifactId>
    36. <version>2.9.1version>
    37. dependency>
    38. <dependency>
    39. <groupId>org.apache.logging.log4jgroupId>
    40. <artifactId>log4j-webartifactId>
    41. <version>2.9.1version>
    42. dependency>
    43. dependencies>

    将此代码块复制到这里,刚创建的Maven项目pom.xml文件是有这个标签的,要替换掉

    将此代码块加入finalName标签下面

    1. <resources>
    2. <resource>
    3. <directory>src/main/javadirectory>
    4. <includes>
    5. <include>**/*.xmlinclude>
    6. includes>
    7. resource>
    8. <resource>
    9. <directory>src/main/resourcesdirectory>
    10. <includes>
    11. <include>jdbc.propertiesinclude>
    12. <include>*.xmlinclude>
    13. includes>
    14. resource>
    15. resources>

     将此代码块加入到标签下面

    1. <plugin>
    2. <groupId>org.mybatis.generatorgroupId>
    3. <artifactId>mybatis-generator-maven-pluginartifactId>
    4. <version>1.3.2version>
    5. <dependencies>
    6. <dependency>
    7. <groupId>mysqlgroupId>
    8. <artifactId>mysql-connector-javaartifactId>
    9. <version>5.1.44version>
    10. dependency>
    11. dependencies>
    12. <configuration>
    13. <overwrite>trueoverwrite>
    14. configuration>
    15. plugin>

     2.导入框架的配置文件

    建立一个jdbc.properties文件,然后将以下代码加入其中

    1. jdbc.driver=com.mysql.jdbc.Driver
    2. jdbc.url=jdbc:mysql://localhost:3306/db_2022_07?useUnicode=true&characterEncoding=UTF-8
    3. jdbc.username=root
    4. jdbc.password=123

     更改Web.xml版本

    1. <web-app xmlns="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">web-app>

     安装插件

    Free mybatis plugin

    Mybatis generator

     mybatis tools

     maven helper 

    详情介绍:Intellij Idea Mybatis 插件(plugin和tools插件)_yangshijin1988的博客-CSDN博客_idea mapper 插件

     全部下载之后记得重启idea

    建立一个mybatis.cfg.xml文件

     

    1. configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
    2. <configuration>
    3. <properties resource="jdbc.properties"/>
    4. <settings>
    5. <setting name="logImpl" value="LOG4J2"/>
    6. settings>
    7. <typeAliases>
    8. typeAliases>
    9. <environments default="development">
    10. <environment id="development">
    11. <transactionManager type="jdbc"/>
    12. <dataSource type="POOLED">
    13. <property name="driver"
    14. value="${jdbc.driver}"/>
    15. <property name="url"
    16. value="${jdbc.url}"/>
    17. <property name="username" value="${jdbc.username}"/>
    18. <property name="password" value="${jdbc.password}"/>
    19. dataSource>
    20. environment>
    21. environments>
    22. <mappers>
    23. <mapper resource="com/javaxl/mapper/BookMapper.xml"/>
    24. mappers>
    25. configuration>

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

    Mybatis generator插件使用步骤

    1.添加配置文件

    创建generatorConfig.xml文件并配置

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

    1.1.修改5.1.44的jar包路径

    指定数据库 jdbc驱动 jar包的位置

     1.2.修改实体类生成地址

     1.3.修改SQL对应的配置文件的生成地址

    1.4.修改Dao层代码的生成地址 

     1.5.指定需要生成增删改查代码对应的表

    配置maven运行generator命令

     增加命令

     

    添加命令行 

    命令:mybatis-generator:generate -e

    选择部署的项目

     选好之后点击OK

     现在注意一下我们的目录结构

    执行命令

     正在生成代码

     已经生成好了

    可以看见,包跟类以及代码都已经自动生成好了

     数据类型也与数据库一致 

    四、Mybatis增删改查案例 

    sqlSession的作用

    1.sqlSession可以拿到Mapper对象
    2.作为缓存使用--被统称一级缓存(默认会开启的缓存)
    3.处于性能的考虑,会采用二级缓存,二级缓存需要手动开启

    SessionUtil
    1. package com.oyang.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 oyang
    7. * @site https://blog.csdn.net
    8. * @qq 1828190940
    9. * @create  2022-08-10 8:37
    10. */
    11. public class SessionUtil {
    12. private static SqlSessionFactory sessionFactory;
    13. private static ThreadLocal threadLocal = new ThreadLocal();
    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. }

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

        分析:
            有事务:增删改
            无事务:查询
        结论:
            测试:查询、删除没问题代码就没问题

    PermissionBiz

    1. package com.oyang.Biz;
    2. import com.oyang.model.Permission;
    3. /**
    4. * @author oyang
    5. * @site https://blog.csdn.net
    6. * @qq 1828190940
    7. * @create  2022-08-10 9:39
    8. */
    9. public interface PermissionBiz {
    10. int deleteByPrimaryKey(Long id);
    11. Permission selectByPrimaryKey(Long id);
    12. }

    PermissionBizImpl

    1. package com.oyang.Biz.impl;
    2. import com.oyang.Biz.PermissionBiz;
    3. import com.oyang.mapper.PermissionMapper;
    4. import com.oyang.model.Permission;
    5. /**
    6. * @author oyang
    7. * @site https://blog.csdn.net
    8. * @qq 1828190940
    9. * @create  2022-08-11 1:46
    10. */
    11. public class PermissionBizImpl implements PermissionBiz {
    12. private PermissionMapper permission;
    13. //alt+insert:快速提供set/get/toString/构造方法
    14. //alt+enter:快速构建实现类,能够填充代码的前半部分
    15. public PermissionMapper getPermission() {
    16. return permission;
    17. }
    18. public void setPermission(PermissionMapper permission) {
    19. this.permission = permission;
    20. }
    21. @Override
    22. public int deleteByPrimaryKey(Long pid) {
    23. return permission.deleteByPrimaryKey(pid);
    24. }
    25. @Override
    26. public Permission selectByPrimaryKey(Long pid) {
    27. return permission.selectByPrimaryKey(pid);
    28. }
    29. }

    测试

     这时,我们测试的方法报错了。因为我们没有修改配置文件

    <mapper resource="com/oyang/mapper/PermissionMapper.xml"/>

     

    再来运行一下

    项目开发中,一般会集成日志框架,日志框架的作用是帮助程序员在开发的过程中快速排查问题,定位问题;

    添加日志框架

    log4j2.xml

    1. <Configuration status="WARN" monitorInterval="30">
    2. <Properties>
    3. <Property name="LOG_HOME">/root/workspace/lucenedemo/logsProperty>
    4. <property name="ERROR_LOG_FILE_NAME">/root/workspace/lucenedemo/logs/errorproperty>
    5. <property name="WARN_LOG_FILE_NAME">/root/workspace/lucenedemo/logs/warnproperty>
    6. <property name="PATTERN">%d{yyyy-MM-dd HH:mm:ss.SSS} [%t-%L] %-5level %logger{36} - %msg%nproperty>
    7. Properties>
    8. <Appenders>
    9. <Console name="Console" target="SYSTEM_OUT">
    10. <ThresholdFilter level="trace" onMatch="ACCEPT"
    11. onMismatch="DENY" />
    12. <PatternLayout pattern="${PATTERN}" />
    13. Console>
    14. <File name="log" fileName="logs/test.log" append="false">
    15. <PatternLayout
    16. pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
    17. File>
    18. <RollingFile name="RollingFileInfo" fileName="${LOG_HOME}/info.log"
    19. filePattern="${LOG_HOME}/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log">
    20. <ThresholdFilter level="info" onMatch="ACCEPT"
    21. onMismatch="DENY" />
    22. <PatternLayout
    23. pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
    24. <Policies>
    25. <TimeBasedTriggeringPolicy interval="1"
    26. modulate="true" />
    27. Policies>
    28. RollingFile>
    29. <RollingFile name="RollingFileWarn" fileName="${WARN_LOG_FILE_NAME}/warn.log"
    30. filePattern="${WARN_LOG_FILE_NAME}/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log">
    31. <ThresholdFilter level="warn" onMatch="ACCEPT"
    32. onMismatch="DENY" />
    33. <PatternLayout
    34. pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
    35. <Policies>
    36. <TimeBasedTriggeringPolicy />
    37. <SizeBasedTriggeringPolicy size="2 kB" />
    38. Policies>
    39. <DefaultRolloverStrategy max="20" />
    40. RollingFile>
    41. <RollingFile name="RollingFileError" fileName="${ERROR_LOG_FILE_NAME}/error.log"
    42. filePattern="${ERROR_LOG_FILE_NAME}/$${date:yyyy-MM}/error-%d{yyyy-MM-dd-HH-mm}-%i.log">
    43. <ThresholdFilter level="error" onMatch="ACCEPT"
    44. onMismatch="DENY" />
    45. <PatternLayout
    46. pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
    47. <Policies>
    48. <TimeBasedTriggeringPolicy interval="1"
    49. modulate="true" />
    50. Policies>
    51. RollingFile>
    52. Appenders>
    53. <Loggers>
    54. <logger name="org.springframework" level="INFO">logger>
    55. <logger name="org.mybatis" level="INFO">logger>
    56. <logger name="org.springframework" level="ERROR" />
    57. <logger name="org.hibernate" level="ERROR" />
    58. <logger name="org.apache.struts2" level="ERROR" />
    59. <logger name="com.opensymphony.xwork2" level="ERROR" />
    60. <logger name="org.jboss" level="ERROR" />
    61. <root level="all">
    62. <appender-ref ref="Console" />
    63. <appender-ref ref="RollingFileInfo" />
    64. <appender-ref ref="RollingFileWarn" />
    65. <appender-ref ref="RollingFileError" />
    66. root>
    67. Loggers>
    68. Configuration>

    运行

    1.日志框架集成的作用:排查定位问题
    2.对于ORM(hibernate/Mybatis/JPA/MP)框架,都需要注意事务的问题 

    ibatis是Mybatis的前身


     OK,今日的学习就到此结束啦,如果对个位看官有帮助的话可以留下免费的赞哦(收藏或关注也行),如果文章中有什么问题或不足以及需要改正的地方可以私信博主,博主会做出改正的。个位看官,小陽在此跟大家说拜拜啦   

  • 相关阅读:
    Java+SpringBoot+Vue:瑜伽馆管理的黄金组合
    LeetCode 3. 无重复字符的最长子串
    Qt升级血与泪
    1分钟快速实现Redis数据对比
    白领要预防肾结石的发生
    多线程设计模式-全面详解(学习总结---从入门到深化)
    hadoop详解
    vba 保存word里面的图片_1分钟批量处理100张图片,有Word在
    Windows安装Docker
    零基础10 天入门 Web3之第2天
  • 原文地址:https://blog.csdn.net/weixin_65211978/article/details/126276918