• MyBatis入门


    目录

            一,MyBatis简介

    二,MyBatis环境搭建

    三,Mybatis generator插件使用步骤

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

    五,案例


    一,MyBatis简介

            是一款半自动的ORM持久层框架,具有较高的SQL灵活性,支持高级映射(一对一,一对多),动态SQL,延迟加载和缓存等特性,即对象映射关系框架;
    是一款关于数据库层面的框架,数据库无关性较低

    二,MyBatis环境搭建

           2.1 创建maven工程

            点击当前项目右键new一个module 

     左侧选择Maven 勾选上方的框,在下方随意点击一行输入webapp再用ctrl+下快捷键找到该行

     命名:

     点击加号输入内容,注意不要输错

     出现该字符提示即表示创建成功

     2.2 配置相关的pom依赖

    1. "1.0" encoding="UTF-8"?>
    2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    4. <modelVersion>4.0.0modelVersion>
    5. <groupId>org.examplegroupId>
    6. <artifactId>pro_maven_01artifactId>
    7. <version>1.0-SNAPSHOTversion>
    8. <packaging>warpackaging>
    9. <name>pro_maven_01 Maven Webappname>
    10. <url>http://www.example.comurl>
    11. <properties>
    12. <maven.compiler.source>1.8maven.compiler.source>
    13. <maven.compiler.target>1.8maven.compiler.target>
    14. properties>
    15. <dependencies>
    16. <dependency>
    17. <groupId>junitgroupId>
    18. <artifactId>junitartifactId>
    19. <version>4.12version>
    20. <scope>testscope>
    21. dependency>
    22. <dependency>
    23. <groupId>javax.servletgroupId>
    24. <artifactId>javax.servlet-apiartifactId>
    25. <version>4.0.0version>
    26. <scope>providedscope>
    27. dependency>
    28. <dependency>
    29. <groupId>org.mybatisgroupId>
    30. <artifactId>mybatisartifactId>
    31. <version>3.4.5version>
    32. dependency>
    33. <dependency>
    34. <groupId>mysqlgroupId>
    35. <artifactId>mysql-connector-javaartifactId>
    36. <version>5.1.44version>
    37. dependency>
    38. <dependency>
    39. <groupId>org.apache.logging.log4jgroupId>
    40. <artifactId>log4j-coreartifactId>
    41. <version>2.9.1version>
    42. dependency>
    43. <dependency>
    44. <groupId>org.apache.logging.log4jgroupId>
    45. <artifactId>log4j-apiartifactId>
    46. <version>2.9.1version>
    47. dependency>
    48. <dependency>
    49. <groupId>org.apache.logging.log4jgroupId>
    50. <artifactId>log4j-webartifactId>
    51. <version>2.9.1version>
    52. dependency>
    53. dependencies>
    54. <build>
    55. <resources>
    56. <resource>
    57. <directory>src/main/javadirectory>
    58. <includes>
    59. <include>**/*.xmlinclude>
    60. includes>
    61. resource>
    62. <resource>
    63. <directory>src/main/resourcesdirectory>
    64. <includes>
    65. <include>jdbc.propertiesinclude>
    66. <include>*.xmlinclude>
    67. includes>
    68. resource>
    69. resources>
    70. <finalName>pro_maven_01finalName>
    71. <pluginManagement>
    72. <plugins>
    73. <plugin>
    74. <groupId>org.mybatis.generatorgroupId>
    75. <artifactId>mybatis-generator-maven-pluginartifactId>
    76. <version>1.3.2version>
    77. <dependencies>
    78. <dependency>
    79. <groupId>mysqlgroupId>
    80. <artifactId>mysql-connector-javaartifactId>
    81. <version>5.1.44version>
    82. dependency>
    83. dependencies>
    84. <configuration>
    85. <overwrite>trueoverwrite>
    86. configuration>
    87. plugin>
    88. <plugin>
    89. <artifactId>maven-clean-pluginartifactId>
    90. <version>3.1.0version>
    91. plugin>
    92. <plugin>
    93. <artifactId>maven-resources-pluginartifactId>
    94. <version>3.0.2version>
    95. plugin>
    96. <plugin>
    97. <artifactId>maven-compiler-pluginartifactId>
    98. <version>3.8.0version>
    99. plugin>
    100. <plugin>
    101. <artifactId>maven-surefire-pluginartifactId>
    102. <version>2.22.1version>
    103. plugin>
    104. <plugin>
    105. <artifactId>maven-war-pluginartifactId>
    106. <version>3.2.2version>
    107. plugin>
    108. <plugin>
    109. <artifactId>maven-install-pluginartifactId>
    110. <version>2.5.2version>
    111. plugin>
    112. <plugin>
    113. <artifactId>maven-deploy-pluginartifactId>
    114. <version>2.8.2version>
    115. plugin>
    116. plugins>
    117. pluginManagement>
    118. build>
    119. project>

     更改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">

     作为一个数据库层面的框架,必定少不了连接数据库

       jdbc.properties文件:

    三,Mybatis generator插件使用步骤

    1.先将该图中的插件下载好,Plugins-->Marketplace 文本框中搜索关键字

     2.配置mybatis的配置文件

    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. <typeAlias type="com.zhw.model.Book" alias="Book"/>
    10. typeAliases>
    11. <environments default="development">
    12. <environment id="development">
    13. <transactionManager type="jdbc"/>
    14. <dataSource type="POOLED">
    15. <property name="driver"
    16. value="${jdbc.driver}"/>
    17. <property name="url"
    18. value="${jdbc.url}"/>
    19. <property name="username" value="${jdbc.username}"/>
    20. <property name="password" value="${jdbc.password}"/>
    21. dataSource>
    22. environment>
    23. environments>
    24. <mappers>
    25. <mapper resource="com/zhw/mapper/BookMapper.xml"/>
    26. mappers>
    27. configuration>

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

      1.安装插件

       上图中的mybatis generator 就是的

       2、配置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:\\Software\\apache-maven-3.5.0-bin\\apache-maven-3.5.0-bin\\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.zhw.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.zhw.mapper"
    25. targetProject="src/main/java">
    26. <property name="enableSubPackages" value="false"/>
    27. sqlMapGenerator>
    28. <javaClientGenerator targetPackage="com.zhw.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. <table schema="" tableName="t_oa_permission" domainObjectName="Permission"
    37. enableCountByExample="false" enableDeleteByExample="false"
    38. enableSelectByExample="false" enableUpdateByExample="false">
    39. table>
    40. context>
    41. generatorConfiguration>

      3、配置maven运行generator命令 

     

    选择需要生成的数据库中的表名:

     配置完成后,点击运行生成dao方法和实体类

     ​​​​​​​

     

     五,案例

     SessionUtil

    1. package com.ljj.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 ljj
    7. * @create 2022-08-10 22:10
    8. */
    9. public class SessionUtil {
    10. private static SqlSessionFactory sessionFactory;
    11. private static ThreadLocal threadLocal = new ThreadLocal();
    12. static {
    13. sessionFactory = new SqlSessionFactoryBuilder().build(SessionUtil.class.getResourceAsStream("/mybatis.cfg.xml"));
    14. }
    15. public static SqlSession openSession() {
    16. SqlSession session = threadLocal.get();
    17. if (null == session) {
    18. session = sessionFactory.openSession();
    19. threadLocal.set(session);
    20. }
    21. return session;
    22. }
    23. public static void main(String[] args) {
    24. SqlSession session = openSession();
    25. System.out.println(session.getConnection());
    26. session.close();
    27. // System.out.println(session.getConnection());
    28. }
    29. }

    BookBiz 

    1. package com.ljj.service;
    2. import com.ljj.model.Book;
    3. /**
    4. * @author ljj
    5. * @create 2022-08-10 23:12
    6. */
    7. public interface BookBiz {
    8. int deleteByPrimaryKey(Integer bid);
    9. Book selectByPrimaryKey(Integer bid);
    10. }

    log4j.xml

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

  • 相关阅读:
    【JavaScript总结】js基础知识点
    Java向上向下转型
    Android拖放startDragAndDrop拖拽Glide灵活加载堆叠圆角图,Kotlin(6)
    【MQTT】Javascript通过WebSocket连接MQTT
    vue 简介 (MVVM介绍,超详细)
    基于JAVA景区售票系统设计与实现 开题报告
    [山东科技大学OJ]2414 Problem G: 倒排字符串
    低代码平台
    SQLSERVER 查询阻塞SQL以及锁
    Java EE——网络层IP协议的格式与内容解析
  • 原文地址:https://blog.csdn.net/weixin_64313980/article/details/126277171