一.Mybatis 入门

一、什么是Mybatis?

MyBatis前身是ibatis,是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。

MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。

MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录。

二、ORM的共同思想

无论是用过的hibernate,mybatis,你都可以法相他们有一个共同点:

  1. 从配置文件(通常是XML配置文件中)得到 sessionfactory.

  2. 由sessionfactory  产生 session.

  3. 在session 中完成对数据的增删改查和事务提交等.

  4. 在用完之后关闭session 。

  5. 在java 对象和 数据库之间有做mapping 的配置文件,也通常是xml 文件。

官方的教程:http://mybatis.github.io/mybatis-3/, 如果英文不是很好的那就看中文的:http://mybatis.github.io/mybatis-3/zh/sqlmap-xml.html

三、Mybatis环境搭建

mybatis 的开发环境搭建,选择: eclipse j2ee 版本,oracle,jdk 1.7,mybatis3.2.0.jar包。这些软件工具均可以到各自的官方网站上下载。

首先建立一个名字为 MyBaits 的 dynamic web project 

  1. 现阶段,你可以直接建立java 工程,但一般都是开发web项目,这个系列教程最后也是web的,所以一开始就建立web工程。

  2. 将 mybatis-3.2.0.jar拷贝到 web工程的lib目录

   或者在pom.xml中加入jar包依赖

<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>mybatis06</groupId>
    <artifactId>mybatis06</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    <build>
        <sourceDirectory>src</sourceDirectory>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.5.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.0.0</version>
                <configuration>
                    <warSourceDirectory>WebContent</warSourceDirectory>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.4</version>
        </dependency>
    </dependencies>
</project>

  3.建库,建表,准备数据

  4.创建Mybatis配置文件Configuration.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>
    
    <typeAliases>
        <!--java 类所对应的别名,映射文件中的resultType可以为student -->
        <typeAlias type="com.pojo.Student" alias="student"/>
    </typeAliases>
    <environments default="development">
    <!-- 数据库开发环境 -->
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="oracle.jdbc.driver.OracleDriver" />
                <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" />
                <property name="username" value="java" />
                <property name="password" value="java123" />
            </dataSource>
        </environment>
    </environments>
    <!-- 对象的映射文件注册 -->
    <mappers>
        <mapper resource="com/pojo/Student.xml"></mapper>
    </mappers>
</configuration>  

  5.创建持久层:

    实体类、实体类对应的dao层接口、实体类对应的Mapper映射文件。

    并将Student.xml映射文件在Configuration.xml中注册。

  Student.java

package com.pojo;

import java.util.Date;

public class Student {
    int stuid;
    String stuName;
    int stuAge;
    Date stuDate;
    String stuSex;
    String stuProfess;
    public int getStuid() {
        return stuid;
    }
    public void setStuid(int stuid) {
        this.stuid = stuid;
    }
    public String getStuName() {
        return stuName;
    }
    public void setStuName(String stuName) {
        this.stuName = stuName;
    }
    public int getStuAge() {
        return stuAge;
    }
    public void setStuAge(int stuAge) {
        this.stuAge = stuAge;
    }
    public Date getStuDate() {
        return stuDate;
    }
    public void setStuDate(Date stuDate) {
        this.stuDate = stuDate;
    }
    public String getStuSex() {
        return stuSex;
    }
    public void setStuSex(String stuSex) {
        this.stuSex = stuSex;
    }
    public String getStuProfess() {
        return stuProfess;
    }
    public void setStuProfess(String stuProfess) {
        this.stuProfess = stuProfess;
    }
}

  IStudentDAO.java

package com.dao;

import com.pojo.Student;

public interface IStudentDAO {
    Student getStudentById(int stuid);
}

  Student.xml

    该映射文件里面 主要是定义各种SQL 语句,以及这些语句的参数,以及要返回的类型等

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dao.IStudentDAO">
    <select id="getStudentById" parameterType="int" resultType="com.pojo.Student">
        select * from student where stuid=#{id}    
    </select>
</mapper>

  6.编写测试类

  Test.java
package com.pojo;

import java.io.IOException;
import java.io.Reader;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class Test {
    public static void main(String[] args) throws IOException {
        //读取核心的配置文件
        Reader reader = Resources.getResourceAsReader("Configuration.xml");
        //创建会话工厂
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
        //数据库会话
        SqlSession session = factory.openSession();

        //查询一个对象  第一个参数字符串是由Student.xml 中的namespace+id组成
        Student stu = session.selectOne("com.dao.IStudentDAO.getStudentById",5);

        System.out.println(stu.getStuName());
        System.out.println(stu.getStuDate());

        session.close();
    }
}
原文地址:https://www.cnblogs.com/wlxslsb/p/10794925.html