MyBatis3入门

这里对mybatis的入门介绍以官方最新MyBatis3.4.1为准,具体文档及jar包请访问:https://github.com/mybatis/mybatis-3/releases

以前经常都在使用mybatis,但通常都是和Spring结合起来用,在配置的时候往往都是在网上或者东配置西配置然后就能用了,但是一直没有仔细的对mybatis有一个系统而全面的配置。哪怕就是单独写一个mybatis的demo都写不出来,前段时间刚好发现mybatis的一篇官方用户手册,所以想从头对mybatis有一个系统而全面的认识。同样对官方用户手册的全篇翻译也是近期的一个小目标。

为了方便对mybatis完全不了解,不知道从何入手的新手做一个简单的讲解。想要写一个mybatis的demo不用去创建一个Java EE的Web工程,这是我以前很大很大的一个误区,以为对此类框架的使用我必须要去创建一个Web工程,创建好了一个Web工程,我又要得去写html,写一个servlet交互等等等等,一想到这儿,我就不想写了。其实大可不必,只需要创建一个普通Java工程即可写出一个mybatis的demo。

我们首先来看看工程的包结构。mapper包是什么呢,我不知道怎么形容,映射,或者可以是dao层——对数据库的操作。pojo即是java实体类。util提供一些工具类。Main即客户端测试代码。mybatis-config.xml为mybatis的配置文件。

我们还需要为工程引入两个jar包。

我们首先要理解清楚mybatis的核心是什么,官方用户手册中说,每个MyBatis应用都以一个SqlSessionFactory为核心。一个SqlSessionFactory实例能够通过SqlSessionFactoryBuilder获得。SqlSessionFactoryBuilder能够从XML配置文件或者从配置类构建一个SqlSessionFactory实例。(Every MyBatis application centers around an instance of SqlSessionFactory. A SqlSessionFactory instance can be acquired by using the SqlSessionFactoryBuilder. SqlSessionFactoryBuilder can build a SqlSessionFactory instance from an XML configuration file, or from a custom prepared instance of the Configuration class.)

我们对SqlSessionFactory的获取采用从XML配置文件的方式获取。首先来实现SessionFactory类。

 1 package day_8_mybatis.util;
 2
 3 import java.io.IOException;
 4 import java.io.InputStream;
 5
 6 import org.apache.ibatis.io.Resources;
 7 import org.apache.ibatis.session.SqlSession;
 8 import org.apache.ibatis.session.SqlSessionFactory;
 9 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
10
11 /**
12  * 获取SqlSession实例
13  * @author turbo
14  *
15  * 2016年9月11日
16  */
17 public class SessionFactory {
18     public static SqlSession getSqlSession(String resource) throws IOException{
19         InputStream inputStream = Resources.getResourceAsStream(resource);
20         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
21         SqlSession sqlSession = sqlSessionFactory.openSession();
22
23         return sqlSession;
24     }
25 }

接着开始写mybatis-config.xml配置文件。

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE configuration
 3   PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4   "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5 <configuration>
 6     <properties>
 7         <property name="driver" value="com.mysql.jdbc.Driver"/>
 8         <property name="url" value="jdbc:mysql://localhost:3306/test"/>
 9         <property name="username" value="root"/>
10         <property name="password" value="0000"/>
11     </properties>
12     <environments default="development">
13         <environment id="development">
14             <transactionManager type="JDBC" />
15             <dataSource type="POOLED">
16                 <property name="driver" value="${driver}"/>
17                 <property name="url" value="${url}"/>
18                 <property name="username" value="${username}"/>
19                 <property name="password" value="${password}"/>
20             </dataSource>
21         </environment>
22     </environments>
23
24     <mappers>
25         <mapper resource="day_8_mybatis/mapper/UserMapper.xml"/>
26     </mappers>
27 </configuration>
28  

配置文件中的properties也可以采用外部引用的方式,及将6-11行修改为:

1 driver=com.mysql.jdbc.Driver
2 url=jdbc:mysql://localhost:3306/mybatis
3 name=root
4 password=XDP

注:此篇MyBatis3入门不讲详细原理及各参数是什么意思,主要是对mybatis的一个demo入门程序。

下面新建一个User pojo类,其中的变量对应数据库中user表的字段(当然这也不是必须的)。

 1 package day_8_mybatis.pojo;
 2
 3 /**
 4  * User实体类
 5  * @author turbo
 6  *
 7  * 2016年9月11日
 8  */
 9 public class User {
10     private int id;
11     private String name;
12     private String age;
13     private String sex;
14     public int getId() {
15         return id;
16     }
17     public void setId(int id) {
18         this.id = id;
19     }
20     public String getName() {
21         return name;
22     }
23     public void setName(String name) {
24         this.name = name;
25     }
26     public String getAge() {
27         return age;
28     }
29     public void setAge(String age) {
30         this.age = age;
31     }
32     public String getSex() {
33         return sex;
34     }
35     public void setSex(String sex) {
36         this.sex = sex;
37     }
38 }

现在开始构建mapper包里的UserMapper.java和UserMapper.xml

UserMapper.java就是一个对数据库的访问接口,不用去实现,因为mybatis已经为我们完成了这件事。

 1 package day_8_mybatis.mapper;
 2
 3 import day_8_mybatis.pojo.User;
 4
 5 /**
 6  * mapper数据库访问接口
 7  * @author turbo
 8  *
 9  * 2016年9月11日
10  */
11 public interface UserMapper {
12     User getUserById(int id);
13 }

UserMapper.xml即是对数据库的具体的sql操作。

1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE mapper
3   PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
4   "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
5 <mapper namespace="day_8_mybatis.mapper.UserMapper">
6     <select id="getUserById" resultType="day_8_mybatis.pojo.User">
7         select * from user where id = #{id}
8     </select>
9 </mapper> 

需要注意的地方是,第5行的namespace必须是此mapper.xml文件对应的mapper接口。第6行的id必须是mapper接口的方法名称,resultType在这里必须是User类的绝对路径(因为此处查询的是一个User类),当然你也可以以别名的方式。第7行#{id}的“id”必须是mapper接口中getUserById方法的参数名称。

下面我们就可以写客户端类进行测试了。

 1 package day_8_mybatis;
 2
 3 import java.io.IOException;
 4 import java.io.InputStream;
 5
 6 import org.apache.ibatis.io.Resources;
 7 import org.apache.ibatis.session.SqlSession;
 8 import org.apache.ibatis.session.SqlSessionFactory;
 9 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
10
11 import day_8_mybatis.mapper.UserMapper;
12 import day_8_mybatis.pojo.User;
13 import day_8_mybatis.util.SessionFactory;
14
15 /**
16  * 客户端
17  * @author turbo
18  *
19  * 2016年9月11日
20  */
21 public class Main {
22
23     /**
24      * @param args
25      * @throws IOException
26      */
27     public static void main(String[] args) throws Exception {
28         String resource = "day_8_mybatis/mybatis-config.xml";        //获取mybatis配置文件路径
29         SqlSession sqlSession = SessionFactory.getSqlSession(resource);    //通过SessionFactory工具类(此工具类为自己构造即util包中的SessionFactory)构造SqlSession
30
31         UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
32         User user = userMapper.getUserById(1);
33
34         System.out.println(user.getAge());
35     }
36
37 }

至于数据库就是简单的几个字段,根据如图创建即可。

这样我们就完成了一个mybatis的一个入门demo程序。

时间: 2024-10-27 16:49:45

MyBatis3入门的相关文章

MyBatis3 入门学习指南

官网原文:http://www.mybatis.org/mybatis-3/zh/index.html 1.简介 1.1 什么是 MyBatis? MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型.接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录.

SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession作用域(Scope)和生命周期

可以说每个MyBatis都是以一个SqlSessionFactory实例为中心的.SqlSessionFactory实例可以通过SqlSessionFactoryBuilder来构建.一是可以通过XML配置文件的方式来构建SqlSessionFactory,二是可以通过Java API的方式来构建.但不管通过什么方式都有一个Configuration贯穿始终,各种配置正是通过Configuration实例来完成实现. 此篇文章旨在通过编码实现MyBatis3.4.1 User Guide所提到的

MyBatis入门教程(基于Mybatis3.2)

MyBatis和Hibernate一样都是基于ORM的关系型数据库框架 ORM工具的基本思想: 1.从配置文件(通常是XML配置文件中)得到 sessionfactory. 2. 由sessionfactory 产生 session 3. 在session中完成对数据的增删改查和事务提交等. 4. 在用完之后关闭session. 5.在java对象和数据库之间有做mapping的配置文件,也通常是xml文件. MyBatis 是支持 普通 SQL 查询 , 存储过程 和 高级映射 的优秀持久框架

【Mybatis3学习入门】【一】从JDBC到Mybatis

转自:  http://chenjc-it.iteye.com/blog/1455688 1.引言 本文主要讲解JDBC怎么演变到Mybatis的渐变过程,重点讲解了为什么要将JDBC封装成Mybaits这样一个持久层框架.再而论述Mybatis作为一个数据持久层框架本身有待改进之处. 2.JDBC实现查询分析 我们先看看我们最熟悉也是最基础的通过JDBC查询数据库数据,一般需要以下七个步骤: (1)  加载JDBC驱动 (2)  建立并获取数据库连接 (3)  创建 JDBC Statemen

【Mybatis3学习入门】【二】Mybatis快速入门

一.准备开发环境 1.新建工程(SE和WEB工程均可),并添加jar包(mybatis和mysql驱动),添加junit测试库 2.准备mysql 数据库 表名:user 表结构: 数据: 版权声明:本文为博主原创文章,未经博主允许不得转载.

Mybatis入门例子

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis .2013年11月迁移到Github. 一.理解什么是MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架. MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索. MyBatis 可以使用简单的XML 或注解用于配置和原始映射,将接

MyBatis学习总结(一)——MyBatis快速入门

MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录. 二.mybatis快速入门 2.1.准备开发环境 1.创建测试项目,普通java项目或者是JavaWeb项目均可,如下图所示: 2.添加相应的jar包 [mybat

MyBatis入门基础(一)

一:对原生态JDBC问题的总结 新项目要使用mybatis作为持久层框架,由于本人之前一直使用的Hibernate,对mybatis的用法实在欠缺,最近几天计划把mybatis学习一哈,特将学习笔记记录于此,方便大家参考,也方便自己查阅. 话不多说,先看看原始的JDBC程序代码,看看这样的代码存在什么问题. package com.utils; import java.sql.Connection; import java.sql.DriverManager; import java.sql.P

MyBatis学习笔记(一)入门

一.理解什么是MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架. MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索. MyBatis 可以使用简单的XML 或注解用于配置和原始映射,将接口和 Java 的 POJO( Plain Old Java Objects,普通的Java 对象)映射成数据库中的记录. 1)MyBATIS 目前提供了三种语言实现的版本,包括:Java..NET以及Ruby.(我主要学习java,