码迷,mamicode.com
首页 > 其他好文 > 详细

mybatis

时间:2018-10-07 10:33:51      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:tps   height   target   测试数据   链接   lan   jar   1.5   3.0   

1、mybatis简介

  a):MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。

iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)
  b):MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。
  c):每个MyBatis应用程序主要都是使用SqlSessionFactory实例的,一个SqlSessionFactory实例可以通过SqlSessionFactoryBuilder获得。SqlSessionFactoryBuilder可以从一个xml配置文件或者一个预定义的配置类的实例获得。
用xml文件构建SqlSessionFactory实例是非常简单的事情。推荐在这个配置中使用类路径资源(classpath resource),但你可以使用任何Reader实例,包括用文件路径或file://开头的url创建的实例。MyBatis有一个实用类----Resources,它有很多方法,可以方便地从类路径及其它位置加载资源。
2、搭建我们的第一个mybatis小demo
  这里说明下这个搭建步骤根据mybatis官方提供的文档示例进行搭建的、下面我贴出这个文档(此文档打包至下面mybatis相关jar包里面下载即可)截图:
  技术分享图片

 

  a):导入mybatis相关jar包及数据库驱动包
   mybatis相关jar包下载链接:https://pan.baidu.com/s/1-GRtDOMYQFx0vvjs_QnJZw  提取码:3gal
   mysql数据库驱动包下载链接:https://pan.baidu.com/s/1L9nFhVmr5ns1Tez2kzmIoA  提取码:gzgw
   oracle数据库驱动包下载链接:https://pan.baidu.com/s/1XTogghptNxNNwM1pP_XY0A   提取码:2y5m
   demo结构图如下:
   技术分享图片

 

   b):Building SqlSessionFactory from XML(从XML配置文件中构建SqlSessionFactory)
    既然构建SqlsessionFactory的前提是从xml文件中那么接下来我们先编写这个mybatis的核心配置文件(mybatis.xml)及实体类映射文件(User.mapper.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>
<environments default="development">
<environment id="development">
<!-- 采用jdbc事务管理其 -->
<transactionManager type="JDBC"/>
<!-- 配置数据源 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
<property name="username" value="root"/>
<property name="password" value="lzj_aeon+"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- 引入实体类的映射文件 -->
<mapper resource="edu/aeon/mybatis/entity/User.mapper.xml"/>
</mappers>
</configuration>
实体类映射文件:User.mapper.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="edu.aeon.mybatis.entity">
<select id="selectAllUsers" resultType="edu.aeon.mybatis.entity.User">
select * from user
</select>
</mapper>

  c):编写User实体类:

package edu.aeon.mybatis.entity;
/**
 * user实体类
 * @author QQ1584875179
 */
public class User {
    //用户id
    private int uid;
    //用户名
    private String uname;
    //用户密码
    private String upw;
    //↓setter/getter
    public int getUid() {
        return uid;
    }
    public void setUid(int uid) {
        this.uid = uid;
    }
    public String getUname() {
        return uname;
    }
    public void setUname(String uname) {
        this.uname = uname;
    }
    public String getUpw() {
        return upw;
    }
    public void setUpw(String upw) {
        this.upw = upw;
    }
    @Override
    public String toString() {
        return uid+"\t"+uname+"\t"+upw;
    }
}

  因为我们每次操作数据库都要获得session(和数据库进行会话/通信)、所以便于代码的复用我们写一个获得session的工具类(MyBatisUtils.java): 

package edu.aeon.mybatis.utils;

import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
/**
 * mybatis工具类
 * @author QQ1584875179
 */
public class MyBatisUtils {
    /**
     * @param resource 构建资源来自resource
     * @return 通过构建资源构建的SqlSessionFactory实例
     * @throws IOException 此处采取抛出异常到顶层、然后我们统一去处理
     */
    public static SqlSessionFactory getSqlSessionFactory(String resource) throws IOException{
        InputStream inputStream = Resources.getResourceAsStream(resource);
        return new SqlSessionFactoryBuilder().build(inputStream);
    }
    /**
     * @param resource 构建资源来自resource
     * @return 通过构建资源构建的SqlSessionFactory实例的openSession()方法获得SqlSession实例
     * @throws IOException 此处采取抛出异常到顶层、然后我们统一去处理
     */
    public static SqlSession getSqlSession(String resource) throws IOException{
        return getSqlSessionFactory(resource).openSession();
    }
}

接下来我们写个测试类(便于测试我们前面的各种配置是否正确):

package edu.aeon.mybatis.test;

import java.io.IOException;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import edu.aeon.mybatis.entity.User;
import edu.aeon.mybatis.utils.MyBatisUtils;

public class Demo01Test {
    public static void main(String[] args) {
        try {
            SqlSession sqlSession = MyBatisUtils.getSqlSession("mybatis/mybatis.xml");
            List<User> userList=sqlSession.selectList("edu.aeon.mybatis.entity.selectAllUsers");
            System.out.println("用户id\t用户名\t用户密码");
            for(User user:userList){
                System.out.println(user);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        
    }
}

  数据库截图:

  技术分享图片

  测试结果(控制台)截图:

  技术分享图片

 

  可见前面我们所有的配置都是正确的!

  接下来为了节省你们搭建环境以及插入测试数据、我附上本次我数据库的创建表、以及测试数据

##创建一个mybatis的数据库
create database mybatis;
##切换我们刚才创建的mybatis数据库为当前数据库
use mybatis;
##创建(user)表
create table user(uid int(3) primary key auto_increment,uname varchar(16),upw varchar(16));
##想user表中插入5条测试数据
insert into user(uname,upw) values(lzj1,aeon1);
insert into user(uname,upw) values(lzj2,aeon2);
insert into user(uname,upw) values(lzj3,aeon3);
insert into user(uname,upw) values(lzj4,aeon4);
insert into user(uname,upw) values(lzj5,aeon5);

 资源整理: 

  mybatis相关jar包下载链接:https://pan.baidu.com/s/1-GRtDOMYQFx0vvjs_QnJZw  提取码:3gal
  mysql数据库驱动包下载链接:https://pan.baidu.com/s/1L9nFhVmr5ns1Tez2kzmIoA  提取码:gzgw
  oracle数据库驱动包下载链接:https://pan.baidu.com/s/1XTogghptNxNNwM1pP_XY0A&nbsp  提取码:2y5m
  demo下载

链接:https://pan.baidu.com/s/1x2Exj8l2ZGA0ChY6wUgE2w  

提取码:d9mh

  

 

  
    

mybatis

标签:tps   height   target   测试数据   链接   lan   jar   1.5   3.0   

原文地址:https://www.cnblogs.com/aeon/p/9749221.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!