zoukankan      html  css  js  c++  java
  • MyBatis入门

    标题目录

        1.mybatis简单介绍

      2.mybatis与hibernate的区别

            3.搭建mybatis框架环境

          4.基于ssm逆向工程的使用(IDEA

          5.Mybatis增删改查案例

    1.mybatis简单介绍

    1.1 mybatis本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github。
    mybatis是一个基于Java的持久层框架(半自动),主要包括SQL Maps和Data Access Objects(DAO)
    1.2 MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。
    MyBatis使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
    1.3 每个MyBatis应用程序主要都是使用SqlSessionFactory实例的,一个SqlSessionFactory实例可以通过SqlSessionFactoryBuilder获得。
    SqlSessionFactoryBuilder可以从一个xml配置文件或者一个预定义的配置类的实例获得。

    2. mybatis与hibernate的区别


    两者均为ORM框架,但也有一些不同
    mybatis                                 hibernate
    轻量级                              重量级
    半自动化                              全自动化
    sql                              hql(但也可以使用sql,但违背了hibernate的初衷)
    扩展性、迁移性比较差        无缝移植

    3.搭建mybatis框架环境

    1、创建maven工程

    2、导入相关pom依赖

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
    
      <groupId>com.hmc</groupId>
      <artifactId>mybatis01</artifactId>
      <version>1.0-SNAPSHOT</version>
      <packaging>war</packaging>
    
      <name>mybatis01 Maven Webapp</name>
      <!-- FIXME change it to the project's website -->
      <url>http://www.example.com</url>
    
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <!--junit-->
        <junit.version>4.12</junit.version>
        <!--servlet  -->
        <servlet.version>4.0.0</servlet.version>
        <!--mybatis-->
        <mybatis-version>3.4.5</mybatis-version>
        <!--mysql-->
        <mysql.version>5.1.44</mysql.version>
      </properties>
    
      <!--junit-->
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>${junit.version}</version>
          <scope>test</scope>
        </dependency>
    
        <!--servlet  -->
        <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>javax.servlet-api</artifactId>
          <version>${servlet.version}</version>
          <scope>provided</scope>
        </dependency>
    
        <!--mysql-->
        <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>${mysql.version}</version>
        </dependency>
    
        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
        <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis</artifactId>
          <version>${mybatis-version}</version>
        </dependency>
    
    
    
        <!--记得修改mybatis.cfg.xml添加如下内容-->
        <!--<setting name="logImpl" value="LOG4J2"/>-->
        <!--核心log4j2jar包-->
        <dependency>
          <groupId>org.apache.logging.log4j</groupId>
          <artifactId>log4j-core</artifactId>
          <version>2.9.1</version>
        </dependency>
        <dependency>
          <groupId>org.apache.logging.log4j</groupId>
          <artifactId>log4j-api</artifactId>
          <version>2.9.1</version>
        </dependency>
        <!--web工程需要包含log4j-web,非web工程不需要-->
        <dependency>
          <groupId>org.apache.logging.log4j</groupId>
          <artifactId>log4j-web</artifactId>
          <version>2.9.1</version>
        </dependency>
    
        <!--分页插件-->
        <dependency>
          <groupId>com.github.pagehelper</groupId>
          <artifactId>pagehelper</artifactId>
          <version>5.1.2</version>
        </dependency>
      </dependencies>
    
      <build>
        <finalName>mybatis01</finalName>
    
        <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
          <plugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-compiler-plugin</artifactId>
              <version>3.7.0</version>
              <configuration>
                <source>${maven.compiler.source}</source>
                <target>${maven.compiler.target}</target>
                <encoding>${project.build.sourceEncoding}</encoding>
              </configuration>
            </plugin>
            <plugin>
    
              <groupId>org.mybatis.generator</groupId>
              <artifactId>mybatis-generator-maven-plugin</artifactId>
              <version>1.3.2</version>
              <dependencies>
                <!--使用Mybatis-generator插件不能使用太高版本的mysql驱动 -->
                <dependency>
                  <groupId>mysql</groupId>
                  <artifactId>mysql-connector-java</artifactId>
                  <version>${mysql.version}</version>
                </dependency>
              </dependencies>
              <configuration>
                <overwrite>true</overwrite>
              </configuration>
            </plugin>
    
    
          </plugins>
        </pluginManagement>
          <resources>
            <resource>
              <directory>src/main/java</directory>
              <includes>
                <include>**/*.xml</include>
              </includes>
            </resource>
              <!--对应的资源目录-->
            <resource>
              <directory>src/main/resources</directory>
              <includes>
                <include>*.properties</include>
                <include>*.xml</include>
              </includes>
            </resource>
          </resources>
      </build>
    </project>

    3、Mybatis相关插件安装

       

       mybatis plugin

    没安装的时候是显示install,完成之后重启IDEA即可,下面的插件以此类推

       Mybatis generator

      mybatis tools

       maven helper

    4、Mybatis.cfg.xml配置

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
    
        <!-- 引入外部配置文件 -->
        <properties resource="jdbc.properties"/>
    
        <!--由log4j实现mybatis日志打印-->
        <settings>
            <setting name="logImpl" value="LOG4J2"/>
        </settings>
    
        <!-- 配置分页插件PageHelper, 4.0.0以后的版本支持自动识别使用的数据库 -->
        <plugins>
            <!-- 配置分页插件PageHelper, 4.0.0以后的版本支持自动识别使用的数据库 -->
            <plugin interceptor="com.github.pagehelper.PageInterceptor">
            </plugin>
        </plugins>
    
        <!-- 别名 -->
        <!--<typeAliases>
        &lt;!&ndash;<typeAlias type="com.hmc.oa.model.Book" alias="Book"/>&ndash;&gt;
           <package name="com.hmc.model"/>
        </typeAliases>-->
    
        <!-- 配置mybatis运行环境  development开发环境-->
        <environments default="development">
            <environment id="development">
                <!-- type="JDBC" 代表使用JDBC的提交和回滚来管理事务 -->
                <transactionManager type="jdbc"/>
    
                <!-- mybatis提供了3种数据源类型,分别是:POOLED,UNPOOLED,JNDI -->
                <!-- POOLED 表示支持JDBC数据源连接池 -->
                <!-- UNPOOLED 表示不支持数据源连接池 -->
                <!-- JNDI 表示支持外部数据源连接池 -->
                <dataSource type="POOLED">
                    <property name="driver"
                              value="${jdbc.driver}"/>
                    <property name="url"
                              value="${jdbc.url}"/>
                    <property name="username" value="${jdbc.username}"/>
                    <property name="password" value="${jdbc.password}"/>
                </dataSource>
            </environment>
        </environments>
    
       <!--映射文件配置-->
        <mappers>
         <mapper resource="com/hmc/mapper/BookMapper.xml"/>
        </mappers>
    
    </configuration>

     4.基于ssm逆向工程的使用(IDEA)

    1、安装Mybatis generator插件

    2、配置generatorConfig.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
    
        <!-- 引入外部配置文件 -->
        <properties resource="jdbc.properties"/>
    
        <!--由log4j实现mybatis日志打印-->
        <settings>
            <setting name="logImpl" value="LOG4J2"/>
        </settings>
    
        <!-- 配置分页插件PageHelper, 4.0.0以后的版本支持自动识别使用的数据库 -->
        <plugins>
            <!-- 配置分页插件PageHelper, 4.0.0以后的版本支持自动识别使用的数据库 -->
            <plugin interceptor="com.github.pagehelper.PageInterceptor">
            </plugin>
        </plugins>
    
        <!-- 别名 -->
        <!--<typeAliases>
        &lt;!&ndash;<typeAlias type="com.hmc.oa.model.Book" alias="Book"/>&ndash;&gt;
           <package name="com.hmc.model"/>
        </typeAliases>-->
    
        <!-- 配置mybatis运行环境  development开发环境-->
        <environments default="development">
            <environment id="development">
                <!-- type="JDBC" 代表使用JDBC的提交和回滚来管理事务 -->
                <transactionManager type="jdbc"/>
    
                <!-- mybatis提供了3种数据源类型,分别是:POOLED,UNPOOLED,JNDI -->
                <!-- POOLED 表示支持JDBC数据源连接池 -->
                <!-- UNPOOLED 表示不支持数据源连接池 -->
                <!-- JNDI 表示支持外部数据源连接池 -->
                <dataSource type="POOLED">
                    <property name="driver"
                              value="${jdbc.driver}"/>
                    <property name="url"
                              value="${jdbc.url}"/>
                    <property name="username" value="${jdbc.username}"/>
                    <property name="password" value="${jdbc.password}"/>
                </dataSource>
            </environment>
        </environments>
    
       <!--映射文件配置-->
        <mappers>
         <mapper resource="com/hmc/mapper/BookMapper.xml"/>
        </mappers>
    
    </configuration>

    3、配置maven运行generator命令

    4、pom中处理generatorConfig.xml不能编译问题

    5.Mybatis增删改查案例

     新建 IBookService接口
    
    
    
    IBookService实现类(IBookServiceImpl
    
    
    
     接下来测试一下(IBookServiceImplTest
    package com.hmc.service.imp;
    
    import com.hmc.mapper.BookMapper;
    import com.hmc.model.Book;
    import com.hmc.service.IBookService;
    import com.zking.ssm.util.MybatisSessionFactoryUtils;
    import com.hmc.vo.BookVo;
    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;
    
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    
    public class IBookServiceImplTest {
    
        private org.apache.ibatis.session.SqlSession SqlSession;
        private IBookService bookService;
        private Book book;
        @Before
        public void setUp() throws Exception {
            SqlSession = MybatisSessionFactoryUtils.openSession();
            BookMapper mapper = SqlSession.getMapper(BookMapper.class);
            IBookServiceImpl IBookServiceImpl=new IBookServiceImpl();
            IBookServiceImpl.setBookMapper(mapper);
            this.bookService=IBookServiceImpl;
            book=new Book();
        }
    
        @After
        public void tearDown() throws  Exception{
            SqlSession.commit();
            SqlSession.close();
        }
    
        @Test
        public void install() {
            List<Book> bk=new ArrayList<Book>();
            bk.add(new Book("mybatis",13.4,"小说"));
            bookService.addbooks(bk);
    
        }
    
            @Test
            public void queryBookAll() {
                List<Book> books = bookService.queryBookAll();
                for (Book book1 : books) {
                    System.out.println(book1);
                }
        }
    
    
    
     
    输出结果
    
    
    
     数据库数据
    
    
    
     查询数据
    
    
    
     
     
     
  • 相关阅读:
    jQuery5事件相关
    jQuery4操作表单+属性+样式
    ueditor不能上传mp4格式的视频--解决方案
    笔记本怎么设置WIfi热点
    em rem vw vh
    字体的使用,坑爹啊!
    font的使用
    photoshop简单切图
    HTTP的学习
    call apply bind的联系与区别
  • 原文地址:https://www.cnblogs.com/xmf3628/p/11673405.html
Copyright © 2011-2022 走看看