• mybatis入门


    目录

    一、mybatis简介

    二、mybatis环境搭建

    1.导入pom依赖

    2.导入框架的配置文件

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

    四、mybatis增删改查测试

    mybatis的测试:


    一、mybatis简介

    MyBatis是一款优秀的(ORM)持久层框架,即对象映射关系框架,是一款关于数据库层面的框架。它支持自定义 SQL、存储过程以及高级映射。

    MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。

    MyBatis 可以通过简单的XML或注解来配置和映射原始类型、接口和Java POJO (Plain Old Java Objects,普通老式Java对象) 为数据库中的记录。

    二、mybatis环境搭建

    1.导入pom依赖

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

    jdbc.properties 

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

    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>

     

    2.导入框架的配置文件

    安装以下插件

    Free mybatis plugin

    Mybatis generator

    mybatis tools

    maven helper 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插件的使用

    安装Mybatis generator插件

     点击setting

    找到Plugins,搜索下载即可 

    配置generatorConfig.xml

    修改5.1.44的jar的路径
    修改实体类生成地址
    修改SQL对应的配置文件的生成地址
    修改dao层代码生成地址
    指定需要生成增删改查代码对应的表 

    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="F:\\Maven\\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.maomao.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.maomao.mapper"
    24. targetProject="src/main/java">
    25. <property name="enableSubPackages" value="false"/>
    26. sqlMapGenerator>
    27. <javaClientGenerator targetPackage="com.mm.mapper"
    28. targetProject="src/main/java" type="XMLMAPPER">
    29. <property name="enableSubPackages" value="false"/>
    30. javaClientGenerator>
    31. <table schema="" tableName="t_mvc_Book" domainObjectName="Book"
    32. enableCountByExample="false" enableDeleteByExample="false"
    33. enableSelectByExample="false" enableUpdateByExample="false">
    34. table>
    35. <table schema="" tableName="t_oa_permission" domainObjectName="Permission"
    36. enableCountByExample="false" enableDeleteByExample="false"
    37. enableSelectByExample="false" enableUpdateByExample="false">
    38. table>
    39. context>
    40. generatorConfiguration>

     配置maven运行generator命令

    点击+,选中Maven

     

    选择项目

     

     在pom文件中使用配置好的命令

     

    四、mybatis增删改查测试

    SessionUtil.java

    1. package com.zking.util;
    2. import org.apache.ibatis.session.SqlSession;
    3. import org.apache.ibatis.session.SqlSessionFactory;
    4. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    5. public class SessionUtil {
    6. private static SqlSessionFactory sessionFactory;
    7. private static ThreadLocal threadLocal = new ThreadLocal();
    8. static {
    9. sessionFactory = new SqlSessionFactoryBuilder().build(SessionUtil.class.getResourceAsStream("/mybatis.cfg.xml"));
    10. }
    11. public static SqlSession openSession() {
    12. SqlSession session = threadLocal.get();
    13. if (null == session) {
    14. session = sessionFactory.openSession();
    15. threadLocal.set(session);
    16. }
    17. return session;
    18. }
    19. public static void main(String[] args) {
    20. SqlSession session = openSession();
    21. System.out.println(session.getConnection());
    22. session.close();
    23. // System.out.println(session.getConnection());
    24. }
    25. }

     BookBiz.java

    1. package com.zking.biz;
    2. import com.zking.model.Book;
    3. public interface BookBiz {
    4. int deleteByPrimaryKey(Integer bid);
    5. Book selectByPrimaryKey(Integer bid);
    6. }

    BookBizImpl.java

    1. package com.zking.biz.impl;
    2. import com.zking.model.Book;
    3. import com.zking.mapper.BookMapper;
    4. import com.zking.biz.BookBiz;
    5. public class BookBizImpl implements BookBiz {
    6. private BookMapper bookMapper;
    7. //alt+insert 快速提供set/get/toString/构造方法
    8. //alt+enter 快速构建实现类,填充代码的前半部分 Ctrl+1
    9. public BookMapper getBookMapper() {
    10. return bookMapper;
    11. }
    12. public void setBookMapper(BookMapper bookMapper) {
    13. this.bookMapper = bookMapper;
    14. }
    15. @Override
    16. public int deleteByPrimaryKey(Integer bid) {
    17. return bookMapper.deleteByPrimaryKey(bid);
    18. }
    19. @Override
    20. public Book selectByPrimaryKey(Integer bid) {
    21. return bookMapper.selectByPrimaryKey(bid);
    22. }
    23. }

     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>

    BookBizImplTest.java

    1. package com.zking.biz.impl;
    2. import com.zking.mapper.BookMapper;
    3. import com.zking.util.SessionUtil;
    4. import org.apache.ibatis.session.SqlSession;
    5. import org.junit.After;
    6. import org.junit.Before;
    7. import org.junit.Test;
    8. public class BookBizImplTest {
    9. private BookBizImpl bookBiz;
    10. private SqlSession sqlSession;
    11. @Before
    12. public void setUp() throws Exception {
    13. System.out.println("初始化方法...");
    14. BookBizImpl bookBiz = new BookBizImpl();
    15. // 从工具类中获取session对象
    16. sqlSession = SessionUtil.openSession();
    17. // 从session对象中获取mapper对象
    18. BookMapper mapper = sqlSession.getMapper(BookMapper.class);
    19. bookBiz.setBookMapper(mapper);
    20. this.bookBiz=bookBiz;
    21. }
    22. @After
    23. public void tearDown() throws Exception {
    24. System.out.println("方法测试结束...");
    25. sqlSession.commit();
    26. sqlSession.close();
    27. }
    28. @Test
    29. public void deleteByPrimaryKey() {
    30. bookBiz.deleteByPrimaryKey(bid:44);
    31. }
    32. @Test
    33. public void selectByPrimaryKey() {
    34. System.out.println("测试的业务方法...");
    35. // System.out.println(bookBiz.getBookMapper());
    36. System.out.println( bookBiz.selectByPrimaryKey(44));
    37. }
    38. }

    mybatis的测试:

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

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

     

  • 相关阅读:
    十个比较有用的linux命令
    【HarmonyOS】遇见的问题汇总
    HTML1:html基础
    python数据分析—删除value=0的行
    woocommerce对接paypal如何进行沙盒测试?
    Docker通过Dockerfile创建Redis、Nginx--详细过程
    从浅入深掌握并发执行框架Executor
    Schema_CN28_XRR0追溯运行/反算
    温控仪的工作原理
    Java+SpringBoot+Vue+MySQL:美食推荐系统的技术革新
  • 原文地址:https://blog.csdn.net/qq_44247968/article/details/126276974