首页 > 代码库 > MyBatis学习笔记

MyBatis学习笔记

1.MyBatis介绍

        MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Ordinary Java Objects,普通的 Java对象)映射成数据库中的记录。
       每个MyBatis应用程序主要都是使用SqlSessionFactory实例的,一个SqlSessionFactory实例可以通过SqlSessionFactoryBuilder获得。SqlSessionFactoryBuilder可以从一个xml配置文件或者一个预定义的配置类的实例获得。
       用xml文件构建SqlSessionFactory实例是非常简单的事情。推荐在这个配置中使用类路径资源(classpath resource),但你可以使用任何Reader实例,包括用文件路径或file://开头的url创建的实例。MyBatis有一个实用类----Resources,它有很多方法,可以方便地从类路径及其它位置加载资源。

2.MyBatis快速入门

(1)所需主要jar包(可忽略版本)

    mybatis-3.3.0.jar -- MyBatis

    mysql-connector-java-5.1.7-bin.jar -- mysql驱动

(2)搭建测试工程,例如

 技术分享

 

(3)MyBatis配置文件说明

   mybatiseConfig.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>
        <typeAlias alias="UserInfo" type="com.demo.model.UserInfo"/>
    </typeAliases>
    
    <!-- 数据库配置 -->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <!-- 配置数据库连接信息(个人配置信息) -->
            <dataSource type="POOLED">
                <property name="driver" value="http://www.mamicode.com/com.mysql.jdbc.Driver" />
                <property name="url" value="http://www.mamicode.com/jdbc:mysql://localhost:3306/demo" />
                <property name="username" value="http://www.mamicode.com/root" />
                <property name="password" value="http://www.mamicode.com/ymb@123" />
            </dataSource>
        </environment>
    </environments>

    <!-- 注册sql映射文件 -->
    <mappers>
        <mapper resource="com/demo/dao/mapper/UserInfo.xml"/>
    </mappers>
</configuration>

 (4)sql映射文件配置说明

    UserInfo.xml

<?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.demo.dao.UserMapper">
    <!-- 根据id获取用户信息 -->
    <select id="selectUserInfo" parameterType="int" resultType="UserInfo">
        SELECT
            id AS id,
            name AS userName,
            pass_word AS passWord,
            email AS email
        FROM
        tbl_demo_user_info
        WHERE id = #{id}
    </select>
    
    <!-- 获取所有用户信息 -->
    <select id="selectUserInfoList" resultType="UserInfo">
        SELECT
            id AS id,
            name AS userName,
            pass_word AS passWord,
            email AS email
        FROM
        tbl_demo_user_info
    </select>
</mapper>

(5)实体类

    UserInfo.java

package com.demo.model;

import lombok.Data;

/**
 * 用户信息实体类
 * 
 * @author Super Yu
 * @version 2017.03.22
 */
@Data
public class UserInfo {
    
    private int id;
    
    private String userName;
    
    private String passWord;
    
    private String email;

//    @Override
//    public String toString() {
//        return "UserInfo [id=" + id + ", userName=" + userName + ", passWord=" + passWord + ", email=" + email + "]";
//    }
    
}

(6)测试类

  TestTestMyBatis.java

package com.demo.test;

import java.io.IOException;
import java.io.Reader;
import java.util.List;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import com.demo.model.UserInfo;

public class TestMyBatis {
    public static void main(String[] args) {
        //mybatis配置文件路径
        String resource = "conf/mybatiseConfig.xml";
        Reader reader = null;
        SqlSession session;
        
        try {
            //加载mybatis配置文件
            reader = Resources.getResourceAsReader(resource);
        } catch (IOException e) {
            e.printStackTrace();
        }
        //构建sqlSession的工厂
        SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder().build(reader);
        //创建能执行映射文件中sql的sqlSession
        session = sqlMapper.openSession();
        
        //按条件查询
        UserInfo userInfo = session.selectOne("selectUserInfo", 1);
        
        //查询所有
        List<UserInfo> userInfoList = session.selectList("selectUserInfoList");
        
        System.out.println(userInfo.toString());
        System.out.println(userInfoList.toString());
    }

}

(7)结果输出

UserInfo(id=1, userName=蔚, passWord=123456, email=yy@163.com)
[UserInfo(id=1, userName=蔚, passWord=123456, email=yy@163.com), UserInfo(id=2, userName=yu1, passWord=123, email=123@.com), UserInfo(id=3, userName=yu2, passWord=123456, email=yy@163.com)]

 (8)数据库

技术分享

 

MyBatis学习笔记