您的位置:首页 > 其它

Mybatis 入门学习教程一

2017-01-02 14:45 429 查看

Mybatis 入门学习教程一

生命不止 折腾不止,本章就是从零基础接触mybatis 写给跟我一样懵懂可爱的小白,希望和大家一起进步。

1.传统jdbc开发问题

在创建连接时存在硬编码。

在执行statement时存在硬编码。

频繁开启和关闭数据库连接,会造成数据库性能下降问题。

2.初识Mybatis

2.1关于mybatis的认识

mybatis 就是一个封装来jdbc的持久层框架,它和hibernate都属 于ORM框架 ,但是具体说,hibernate 是一个完全的ORM 框架,而mybatis 是一个不完全的orm框架

mybatis 本身让程序员只关注sql本身,不需要去关注如何连接和创建、statement的创建等操作。

mybatis 会将输入参数、输出结果进行映射。

2.2 mybatis原理

2.2.1全局配置文件SqlMapConfig.xml

全局配置文件(配置数据源、事务运行等信息)

2.2.2映射文件

映射文件是关执行statement的相关信息,包括sql语句、输入参数和输出结果

2.2.3 执行过程

* 1. 配置文件*—->>

* 2. SqlSessionFactory* (会话工厂) 作用:产生会话 —>>

* 3. sqlSession* 作用:它是一个面向程序员的接口,程序员通过该接口可以对数据库进行增删改查方法 该接口有一个默认的实现:defaultsqlSession类 —->>

* 4. executor*(执行器) sqlsession 本身不能直接操作数据库需要通过executor接口来真正操作数据库 该接口有连个实现:基本执行器、缓存执行器(默认) —–>>

* 5. mappedStatement* 作用:封装了执行statement时的信息, 包括sql语句、输入参数 、输出结果。(输入输出类型:简单类型 pojo hashmap ) —>>

* 6. 数据库*



3.下载Mybatis

mybatis 代码由github.com托管 下载地址: http://github.com/mybatis/mybatis-3/releases

解压后如图:




4简单案例及配置mybatis

本案例就是通过使用Mybatis 来 查询用户表里的一条记录

4.1 配置环境

确保你的电脑已经配有java环境 和 有一款ide 我使用的是myeclipse

4.2建工程导包

首先要新建工程在工程目录下新建一个与src 同级别的folder 分别命名 config ,并将文件夹加入buildpath的豪华套餐中(为了获取资源须加入buildpath)之后导入mybatis 核心包 (mybatis-3.4.1)和 依赖包(lib目录下) 到项目中



4.3配置xml文件,创建java类

4.3.1配置全局文件SqlMapConfig.xml 文件

在config 下创建一个xml 文件命名为 SqlMapConfig.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"><!-- 注意这儿为 config.dtd -->
<configuration>
<!-- 环境配置  与spring整合,该信息由spring来管理-->
<environments default="development">
<environment id="development">
<!-- 配置jdbc事物控制,由mybatis进行管理 -->
<transactionManager type="JDBC"/>
<!-- 配置数据源 ,采用mybatis连接池 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis1db?useUnicode=true&characterEncoding=utf-8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>

<!-- 加载映射文件 -->
<mappers>
<mapper resource="User.xml"/>
</mappers>
</configuration>


4.3.2配置映射文件

比如说要实现一个查询用户的User.xml 在config下新建一个User.xml  (这种命名规范是由ibatis遗留下来的 ibatis是Mybatis前身)。


<?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">
<!-- namespace:命名空间,对statement的信息进行分类管理 -->
<!-- 注意mapper代理时,它具有特殊及重要的作用 -->
<mapper namespace="com.mybatis1.example.MybatisTest">
<!-- 根据用户ID来查询用户信息 返回类型为User类型  -->
<!--  select:表示一个MappedStatement对象-->
<!-- id: statement的唯一标示 -->
<!--  #{}:表示一个占位符 ?-->
<!--  #{id}:里边的id表示输入参数的参数名称,如果该参数是简单类型,那么#{ } 里边可以任意写,pojo类型不可以任意写-->
<!--  select * from USER where id =#{ } -->
<select id="selectId" resultType="com.mybatis1.pojo.User">
select * from USER where id = #{id}
</select>
</mapper>


4.3.3创建java类

在src目录下新建 User.java 和 MybatisTest .java 类 如图



User.java 是一个pojo 也就是一个javabean 。 MybatisTest.java是测试类,里边写一个方法用单元测试看执行结果。

User.java

package com.mybatis1.pojo;

public class User {
private  int id  ;
private  String uname ;

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getUname() {
return uname;
}

public void setUname(String uname) {
this.uname = uname;
}

@Override
public String toString() {
// TODO Auto-generated method stub
return "id:"+id+"uname:"+uname;
}
}


MybatisTest.java

package com.mybatis1.example;

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;
import org.junit.Test;

public class MybatisTest {

@Test
public void findUserByIdTest() throws IOException
{
String resource ="SqlMapConfig.xml" ;
//读取配置文件
InputStream is =Resources.getResourceAsStream(resource) ;

//使用SqlSessionFactory这个SqlSessionFactory的实现类来创建sqlsessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is) ;

// 创建 SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession() ;

//调用SqlSession的增删改差的方法
//第一个参数为statement的唯一标示, 第二个为查找条件的参数 这里查找 id 为1
com.mybatis1.pojo.User user= sqlSession.selectOne("com.mybatis1.example.MybatisTest.selectId",1) ;
//输出查询用户的结果。
System.out.println(user.toString());
}

}


到此mybatis就准备好了 接着准备一下数据库,数据库都是事先准备好的因为不是重点所以我最后再搞。

CREATE DATABASE mybatis1db ;
USE mybatis1db ;
CREATE TABLE USER(
id INT(5) NOT NULL AUTO_INCREMENT,
uname CHAR(10) NOT NULL,
PRIMARY KEY(id)
);

INSERT INTO USER(uname) VALUES("shaoduo") ;
INSERT INTO USER(uname) VALUES("linxiongcheng") ;
INSERT INTO USER(uname) VALUES("linbingxian") ;
INSERT INTO USER(uname) VALUES("gongshihang") ;
INSERT INTO USER(uname) VALUES("sunxingouba") ;
INSERT INTO USER(uname) VALUES("aaaa") ;

SELECT * FROM USER ;




最后测试一下 直接在MybatisTest 的方法右击run as Junit Test 然后控制台就有了输出信息。



通过使用Mybatis 查询数据库中的一条记录 就是本案例的过程,写的比较仓促,有问题的话希望大家指出。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: