目的:

  mybatis简介

  MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。

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

  MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。

  

  搭建mybatis环境

  1、创建maven工程

  2、导入相关pom依赖

  3、Mybatis相关插件安装

    Free mybatis plugin

    Mybatis generater

    mybatis tools

    maven helper

  4、Mybatis.cfg.xml配置

Pom.xml依赖

  1. <?xml version="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/maven-v4_0_0.xsd">
  4. <parent>
  5. <artifactId>module</artifactId>
  6. <groupId>com.huangting</groupId>
  7. <version>1.0-SNAPSHOT</version>
  8. </parent>
  9.  
  10. <modelVersion>4.0.</modelVersion>
  11. <packaging>war</packaging>
  12.  
  13. <name>mybatis</name>
  14. <artifactId>mybatis</artifactId>
  15. <properties>
  16. <maven.compiler.source>1.8</maven.compiler.source>
  17. <maven.compiler.target>1.8</maven.compiler.target>
  18. </properties>
  19. <dependencies>
  20. <!-- ********************** junit单元测试依赖 ********************** -->
  21. <dependency>
  22. <groupId>junit</groupId>
  23. <artifactId>junit</artifactId>
  24. <version>4.12</version>
  25. <scope>test</scope>
  26. </dependency>
  27.  
  28. <!-- ********************** Java Servlet API ********************** -->
  29. <dependency>
  30. <groupId>javax.servlet</groupId>
  31. <artifactId>javax.servlet-api</artifactId>
  32. <version>4.0.</version>
  33. <scope>provided</scope>
  34. </dependency>
  35.  
  36. <!-- ********************** Mybatis依赖 ********************** -->
  37. <dependency>
  38. <groupId>org.mybatis</groupId>
  39. <artifactId>mybatis</artifactId>
  40. <version>3.4.</version>
  41. </dependency>
  42.  
  43. <!-- ********************** Mysql JDBC驱动 ********************** -->
  44. <dependency>
  45. <groupId>mysql</groupId>
  46. <artifactId>mysql-connector-java</artifactId>
  47. <version>5.1.</version>
  48. </dependency>
  49.  
  50. <!-- ********************** 日志配置 ********************** -->
  51. <!--记得修改mybatis.cfg.xml添加如下内容-->
  52. <!--<setting name="logImpl" value="LOG4J2"/>-->
  53. <!--核心log4j2jar包-->
  54. <dependency>
  55. <groupId>org.apache.logging.log4j</groupId>
  56. <artifactId>log4j-core</artifactId>
  57. <version>2.9.</version>
  58. </dependency>
  59. <dependency>
  60. <groupId>org.apache.logging.log4j</groupId>
  61. <artifactId>log4j-api</artifactId>
  62. <version>2.9.</version>
  63. </dependency>
  64. <!--web工程需要包含log4j-web,非web工程不需要-->
  65. <dependency>
  66. <groupId>org.apache.logging.log4j</groupId>
  67. <artifactId>log4j-web</artifactId>
  68. <version>2.9.</version>
  69. </dependency>
  70. <dependency>
  71. <groupId>junit</groupId>
  72. <artifactId>junit</artifactId>
  73. <version>4.12</version>
  74. </dependency>
  75. </dependencies>
  76. <build>
  77. <resources>
  78. <!--解决mybatis-generator-maven-plugin运行时没有将XxxMapper.xml文件放入target文件夹的问题-->
  79. <resource>
  80. <directory>src/main/java</directory>
  81. <includes>
  82. <include>**/*.xml</include>
  83. </includes>
  84. </resource>
  85. <!--解决mybatis-generator-maven-plugin运行时没有将jdbc.properites文件放入target文件夹的问题-->
  86. <resource>
  87. <directory>src/main/resources</directory>
  88. <includes>
  89. <include>jdbc.properties</include>
  90. <include>*.xml</include>
  91. </includes>
  92. </resource>
  93. </resources>
  94. <pluginManagement>
  95. <plugins>
  96. <plugin>
  97. <groupId>org.mybatis.generator</groupId>
  98. <artifactId>mybatis-generator-maven-plugin</artifactId>
  99. <version>1.3.2</version>
  100. <dependencies>
  101. <!--使用Mybatis-generator插件不能使用太高版本的mysql驱动 -->
  102. <dependency>
  103. <groupId>mysql</groupId>
  104. <artifactId>mysql-connector-java</artifactId>
  105. <version>5.1.44</version>
  106. </dependency>
  107. </dependencies>
  108. <configuration>
  109. <overwrite>true</overwrite>
  110. </configuration>
  111. </plugin>
  112. <plugin>
  113. <groupId>org.mortbay.jetty</groupId>
  114. <artifactId>maven-jetty-plugin</artifactId>
  115. <version>6.1.7</version>
  116. <configuration>
  117. <connectors>
  118. <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
  119. <port>8888</port>
  120. <maxIdleTime>30000</maxIdleTime>
  121. </connector>
  122. </connectors>
  123. <webAppSourceDirectory>${project.build.directory}/${pom.artifactId}-${pom.version}
  124. </webAppSourceDirectory>
  125. <contextPath>/</contextPath>
  126. </configuration>
  127. </plugin>
  128. </plugins>
  129. </pluginManagement>
  130. </build>
  131. </project>

  Jdbc.properties 连接数据库配置文件

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

  接下来安装以下插件

    Free mybatis plugin

  

  Mybatis generater

  

  mybatis tools

  

  maven helper

  

  mybatis.cfg.xml

  1. <?xml version="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. <!-- 引入外部配置文件 -->
  5. <properties resource="jdbc.properties"/>
  6.  
  7. <settings>
  8. <setting name="logImpl" value="LOG4J2"/>
  9. </settings>
  10.  
  11. <!-- 别名 -->
  12. <typeAliases>
  13. <!--<typeAlias type="com.huangting.model.Book" alias="Book"/>-->
  14. </typeAliases>
  15.  
  16. <!-- 配置mybatis运行环境 -->
  17. <environments default="development">
  18. <environment id="development">
  19. <!-- type="JDBC" 代表使用JDBC的提交和回滚来管理事务 -->
  20. <transactionManager type="jdbc"/>
  21.  
  22. <!-- mybatis提供了3种数据源类型,分别是:POOLED,UNPOOLED,JNDI -->
  23. <!-- POOLED 表示支持JDBC数据源连接池 -->
  24. <!-- UNPOOLED 表示不支持数据源连接池 -->
  25. <!-- JNDI 表示支持外部数据源连接池 -->
  26. <dataSource type="POOLED">
  27. <property name="driver"
  28. value="${jdbc.driver}"/>
  29. <property name="url"
  30. value="${jdbc.url}"/>
  31. <property name="username" value="${jdbc.username}"/>
  32. <property name="password" value="${jdbc.password}"/>
  33. </dataSource>
  34. </environment>
  35. </environments>
  36.  
  37. <mappers>
  38. <!--<mapper resource="com/haungting/mapper/BookMapper.xml"/>-->
  39. </mappers>
  40. </configuration>

  基于ssm逆向工程的使用

  配置generatorConfig.xml

  1. <?xml version="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. <!-- 引入配置文件 -->
  6. <properties resource="jdbc.properties"/>
  7.  
  8. <!--指定数据库jdbc驱动jar包的位置-->
  9. <classPathEntry location="E:\Maven\Maven_cang\mysql\mysql-connector-java\5.1.44\mysql-connector-java-5.1.44.jar"/>
  10.  
  11. <!-- 一个数据库一个context -->
  12. <context id="infoGuardian">
  13. <!-- 注释 -->
  14. <commentGenerator>
  15. <property name="suppressAllComments" value="true"/><!-- 是否取消注释 -->
  16. <property name="suppressDate" value="true"/> <!-- 是否生成注释代时间戳 -->
  17. </commentGenerator>
  18.  
  19. <!-- jdbc连接 -->
  20. <jdbcConnection driverClass="${jdbc.driver}"
  21. connectionURL="${jdbc.url}" userId="${jdbc.username}" password="${jdbc.password}"/>
  22.  
  23. <!-- 类型转换 -->
  24. <javaTypeResolver>
  25. <!-- 是否使用bigDecimal, false可自动转化以下类型(Long, Integer, Short, etc.) -->
  26. <property name="forceBigDecimals" value="false"/>
  27. </javaTypeResolver>
  28.  
  29. <!-- 01 指定javaBean生成的位置 -->
  30. <!-- targetPackage:指定生成的model生成所在的包名 -->
  31. <!-- targetProject:指定在该项目下所在的路径 -->
  32. <javaModelGenerator targetPackage="com.huangting.model"
  33. targetProject="src/main/java">
  34. <!-- 是否允许子包,即targetPackage.schemaName.tableName -->
  35. <property name="enableSubPackages" value="false"/>
  36. <!-- 是否对model添加构造函数 -->
  37. <property name="constructorBased" value="true"/>
  38. <!-- 是否针对string类型的字段在set的时候进行trim调用 -->
  39. <property name="trimStrings" value="false"/>
  40. <!-- 建立的Model对象是否 不可改变 即生成的Model对象不会有 setter方法,只有构造方法 -->
  41. <property name="immutable" value="false"/>
  42. </javaModelGenerator>
  43.  
  44. <!-- 02 指定sql映射文件生成的位置 -->
  45. <sqlMapGenerator targetPackage="com.huangting.mapper"
  46. targetProject="src/main/java">
  47. <!-- 是否允许子包,即targetPackage.schemaName.tableName -->
  48. <property name="enableSubPackages" value="false"/>
  49. </sqlMapGenerator>
  50.  
  51. <!-- 03 生成XxxMapper接口 -->
  52. <!-- type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper对象 -->
  53. <!-- type="MIXEDMAPPER",生成基于注解的Java Model 和相应的Mapper对象 -->
  54. <!-- type="XMLMAPPER",生成SQLMap XML文件和独立的Mapper接口 -->
  55. <javaClientGenerator targetPackage="com.huangting.mapper"
  56. targetProject="src/main/java" type="XMLMAPPER">
  57. <!-- 是否在当前路径下新加一层schema,false路径com.oop.eksp.user.model, true:com.oop.eksp.user.model.[schemaName] -->
  58. <property name="enableSubPackages" value="false"/>
  59. </javaClientGenerator>
  60.  
  61. <!-- 配置表信息 -->
  62. <!-- schema即为数据库名 -->
  63. <!-- tableName为对应的数据库表 -->
  64. <!-- domainObjectName是要生成的实体类 -->
  65. <!-- enable*ByExample是否生成 example类 -->
  66. <!--<table schema="" tableName="t_book" domainObjectName="Book"-->
  67. <!--enableCountByExample="false" enableDeleteByExample="false"-->
  68. <!--enableSelectByExample="false" enableUpdateByExample="false">-->
  69. <!--&lt;!&ndash; 忽略列,不生成bean 字段 &ndash;&gt;-->
  70. <!--&lt;!&ndash; <ignoreColumn column="FRED" /> &ndash;&gt;-->
  71. <!--&lt;!&ndash; 指定列的java数据类型 &ndash;&gt;-->
  72. <!--&lt;!&ndash; <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" /> &ndash;&gt;-->
  73. <!--</table>-->
  74.  
  75. <table schema="" tableName="t_mvc_book" domainObjectName="Book"
  76. enableCountByExample="false" enableDeleteByExample="false"
  77. enableSelectByExample="false" enableUpdateByExample="false">
  78. <!-- 忽略列,不生成bean 字段 -->
  79. <!-- <ignoreColumn column="FRED" /> -->
  80. <!-- 指定列的java数据类型 -->
  81. <!-- <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" /> -->
  82. </table>
  83.  
  84. </context>
  85. </generatorConfiguration>

  配置maven运行generator命令

  从这里面去配置maven

  

  1. mybatis-generator:generate -e
  2.  
  3. 然后点击运行,自动生成文件
  1.  

Mybatis增删改查案例

  1. SessionUtil.java
  1. package com.huangting.util;
  2.  
  3. import org.apache.ibatis.session.SqlSession;
  4. import org.apache.ibatis.session.SqlSessionFactory;
  5. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  6.  
  7. /**
  8. * @author 黄大娘
  9. * @company dogson有限公司
  10. * @create  2019-09-20 5:05
  11. */
  12. public class SessionUtil {
  13. private static SqlSessionFactory sessionFactory;
  14. private static ThreadLocal<SqlSession> threadLocal = new ThreadLocal<SqlSession>();
  15. static {
  16. sessionFactory = new SqlSessionFactoryBuilder().build(SessionUtil.class.getResourceAsStream("/mybatis.cfg.xml"));
  17. }
  18.  
  19. public static SqlSession openSession() {
  20. SqlSession session = threadLocal.get();
  21. if (null == session) {
  22. session = sessionFactory.openSession();
  23. threadLocal.set(session);
  24. }
  25. return session;
  26. }
  27.  
  28. public static void main(String[] args) {
  29. SqlSession session = openSession();
  30. System.out.println(session.getConnection());
  31. session.close();//关闭session
  32. // System.out.println(session.getConnection());
  33. }
  34. }  

  BookService.java

  1. package com.huangting.service;
  2.  
  3. import com.huangting.model.Book;
  4.  
  5. /**
  6. * @author 黄大娘
  7. * @company dogson有限公司
  8. * @create  2019-09-20 5:08
  9. */
  10. public interface Bookservice {
  11. int deleteByPrimaryKey(Integer bid);
  12.  
  13. int insert(Book record);
  14.  
  15. int insertSelective(Book record);
  16.  
  17. Book selectByPrimaryKey(Integer bid);
  18.  
  19. int updateByPrimaryKeySelective(Book record);
  20.  
  21. int updateByPrimaryKey(Book record);
  22. }
  1. BookServiceImpl.java
  1. package com.huangting.service.ipml;
  2.  
  3. import com.huangting.mapper.BookMapper;
  4. import com.huangting.model.Book;
  5. import com.huangting.service.Bookservice;
  6.  
  7. /**
  8. * @author 黄大娘
  9. * @company dogson有限公司
  10. * @create  2019-09-20 5:12
  11. */
  12. public class BookServiceImpl implements Bookservice {
  13. private BookMapper bookMapper;
  14. public BookMapper getBookMapper() {
  15. return bookMapper;
  16. }
  17.  
  18. public void setBookMapper(BookMapper bookMapper) {
  19. this.bookMapper = bookMapper;
  20. }
  21.  
  22. @Override
  23. public int deleteByPrimaryKey(Integer bid) {
  24. return bookMapper.deleteByPrimaryKey(bid);
  25. }
  26.  
  27. @Override
  28. public int insert(Book record) {
  29. return bookMapper.insert(record);
  30. }
  31.  
  32. @Override
  33. public int insertSelective(Book record) {
  34. return bookMapper.insertSelective(record);
  35. }
  36.  
  37. @Override
  38. public Book selectByPrimaryKey(Integer bid) {
  39. return bookMapper.selectByPrimaryKey(bid);
  40. }
  41.  
  42. @Override
  43. public int updateByPrimaryKeySelective(Book record) {
  44. return 0;
  45. }
  46.  
  47. @Override
  48. public int updateByPrimaryKey(Book record) {
  49. return 0;
  50. }
  51. }
  1. BookServiceImplTest.java
  1.  
  1. package com.huangting.test;
  2.  
  3. import com.huangting.mapper.BookMapper;
  4. import com.huangting.model.Book;
  5. import com.huangting.service.Bookservice;
  6. import com.huangting.service.ipml.BookServiceImpl;
  7. import com.huangting.util.SessionUtil;
  8. import org.apache.ibatis.session.SqlSession;
  9. import org.junit.After;
  10. import org.junit.Before;
  11. import org.junit.Test;
  12.  
  13. /**
  14. * @author 黄大娘
  15. * @company dogson有限公司
  16. * @create  2019-09-20 5:14
  17. */
  18. public class BookServiceImplTest {
  19. private Bookservice bookService;
  20. private SqlSession sqlSession;
  21.  
  22. @Before
  23. public void setUp() throws Exception {
  24. BookServiceImpl bookServiceImpl = new BookServiceImpl();
  25. sqlSession = SessionUtil.openSession();
  26. bookServiceImpl.setBookMapper(sqlSession.getMapper(BookMapper.class));
  27. this.bookService = bookServiceImpl;
  28. }
  29.  
  30. @After
  31. public void tearDown() throws Exception {
  32. sqlSession.commit();
  33. sqlSession.close();
  34. }
  35.  
  36. @Test
  37. public void insert() {
  38. Book book = new Book();
  39. book.setBname("zzz");
  40. book.setPrice(12.3);
  41. book.setBid(5);
  42. int insert = bookService.insert(book);
  43. }
  44.  
  45. @Test
  46. public void selectByPrimaryKey() {
  47. Book book = this.bookService.selectByPrimaryKey(66);
  48. System.out.println(book);
  49.  
  50. }
  51. }
  1.  

效果:

查询

新增:

谢谢观看!!

Mybatis配置、逆向工程自动生成代码(CRUD案例)的更多相关文章

  1. 02 使用Mybatis的逆向工程自动生成代码

    1.逆向工程的作用 Mybatis 官方提供了逆向工程,可以针对数据库表自动生成Mybatis执行所需要的代码(包括mapper.xml.Mapper.java.pojo). 2.逆向工程的使用方法 ...

  2. 使用Mybatis的逆向工程自动生成代码

    1.逆向工程的作用 Mybatis 官方提供了逆向工程,可以针对数据库表自动生成Mybatis执行所需要的代码(包括mapper.xml.Mapper.java.pojo). 2.逆向工程的使用方法 ...

  3. springboot(十三):springboot结合mybatis generator逆向工程自动生成代码

    错信息generate failed: Exception getting JDBC Driver: com.mysql.jdbc.Driver 上网查了一下,发现原来是generator这个插件在运 ...

  4. (转)MyBatis框架的学习(七)——MyBatis逆向工程自动生成代码

    http://blog.csdn.net/yerenyuan_pku/article/details/71909325 什么是逆向工程 MyBatis的一个主要的特点就是需要程序员自己编写sql,那么 ...

  5. MyBatis框架之mybatis逆向工程自动生成代码

    http://www.jb51.net/article/82062.htm Mybatis属于半自动ORM,在使用这个框架中,工作量最大的就是书写Mapping的映射文件,由于手动书写很容易出错,我们 ...

  6. MyBatis使用Generator自动生成代码

    MyBatis中,可以使用Generator自动生成代码,包括DAO层. MODEL层 .MAPPING SQL映射文件. 第一步: 配置好自动生成代码所需的XML配置文件,例如(generator. ...

  7. Eclipse 使用mybatis generator插件自动生成代码

    Eclipse 使用mybatis generator插件自动生成代码 标签: mybatis 2016-12-07 15:10 5247人阅读 评论(0) 收藏 举报 .embody{ paddin ...

  8. Spring Boot MyBatis 通用Mapper 自动生成代码

    一.在pom.xml文件中进入mybatis自动生成代码相关的jar包: 注意: <configurationFile>标签中配置的是“generatorConfig.xml”文件位置. ...

  9. 回顾一下MyBatis逆向工程——自动生成代码

    前言 最近做的项目(SSM+Shiro)的数据库表已经创建完成,一共有15张表,如果我们一个个去写pojo/bean的代码以及各种sql语句的话未免太过麻烦而且很容易出错,这个时候我们就需要MyBat ...

随机推荐

  1. 做动画animation--matplotlib--python2和3通用代码

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/weixin_42053726/artic ...

  2. linux系统中如何查看acpi信息?

    答: 进入/sys/firmware/acpi/tables, 然后输入tree命令即可查看acpi信息

  3. Jupyter Notebook in a virtual environment (virtualenv)

    $ python -m venv projectname $ source projectname/bin/activate (venv) $ pip install ipykernel (venv) ...

  4. OctetString 转String

    /// <summary> /// OctetString转时间 /// </summary> /// <param name="ss">字符串 ...

  5. Vue事件 定义方法执行方法 获取数据 改变数据 执行方法传值 以及事件对象

    <template> <div id="app"> <!-- <img v-bind:src='url' /> <img :src= ...

  6. vue plupload 的使用

    1.  首选npm安装plupload 2. 阿里云OSS PHP 安全上传 <template> <div class="imgUpload"> aaa ...

  7. LinkedHashMap和hashMap和TreeMap的区别

    推荐博客:https://www.jianshu.com/p/8f4f58b4b8ab 区别: LinkedHashMap是继承于HashMap,是基于HashMap和双向链表来实现的. HashMa ...

  8. 最基础的Python的socket编程入门教程

    最基础的Python的socket编程入门教程 本文介绍使用Python进行Socket网络编程,假设读者已经具备了基本的网络编程知识和Python的基本语法知识,本文中的代码如果没有说明则都是运行在 ...

  9. POJ 3903 Stock Exchange 最长上升子序列入门题

    题目链接:http://poj.org/problem?id=3903 最长上升子序列入门题. 算法时间复杂度 O(n*logn) . 代码: #include <iostream> #i ...

  10. -webkit-overflow-scrolling : touch 快速滚动 回弹 效果

    现在很多for Mobile的HTML5网页内都有快速滚动和回弹的效果,看上去和原生app的效率都有得一拼. 要实现这个效果很简单,只需要在元素上加一行css代码即可: -webkit-overflo ...