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 我使用的是myeclipse4.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 查询数据库中的一条记录 就是本案例的过程,写的比较仓促,有问题的话希望大家指出。
相关文章推荐
- MyBatis入门学习教程
- MyBatis入门学习教程 MyBatis快速入门1-8(2)
- MyBatis学习总结-MyBatis快速入门的系列教程
- MyBatis入门学习教程
- MyBatis入门学习教程-MyBatis缓存
- bc94 老司机学习MyBatis教程之MyBatis基础篇简单入门HelloWorld
- mybatis框架入门学习教程
- MyBatis入门学习教程 解决字段名与实体类属性名不相同的冲突
- MyBatis入门学习教程-实现关联表查询
- MyBatis入门学习教程-MyBatis快速入门
- MyBatis入门学习教程 MyBatis快速入门
- MyBatis入门学习教程
- MyBatis入门学习教程-优化MyBatis配置文件中的配置
- MyBatis入门学习教程-解决字段名与实体类属性名不相同的冲突
- MyBatis入门学习教程 MyBatis快速入门
- mybatis快速入门学习教程新手注意问题小结
- Mybatis学习教程—— Mybatis入门实例
- MyBatis入门学习教程-使用MyBatis对表执行CRUD操作
- MyBatis入门学习教程 MyBatis快速入门1-8(1)
- MyBatis入门学习教程