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);
            }
    }

 

 
输出结果

 


 

 数据库数据

 


 

 查询数据

 


 

 
 
 

 

posted @ 2019-10-14 19:29  小蜜疯  阅读(109)  评论(0编辑  收藏  举报