笔记50 Mybatis快速入门(一)

一、Mybatis简介

  MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

  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,它有很多方法,可以方便地从类路径及其它位置加载资源。

二、入门

1.创建表

2.导入jar包

3.创建实体类

准备实体类Category,用于映射数据库中的表category。

 1 package mybatis.pojo;
 2 
 3 public class Category {
 4     private int id;
 5     private String name;
 6 
 7     public int getId() {
 8         return id;
 9     }
10 
11     public void setId(int id) {
12         this.id = id;
13     }
14 
15     public String getName() {
16         return name;
17     }
18 
19     public void setName(String name) {
20         this.name = name;
21     }
22 
23 }

4.配置文件mybatis-config.xml

  在src目录下创建mybatis的主配置文件mybatis-config.xml (相当于hibernate.cfg.xml,如果没有hibernate基础请忽略本句)。
其作用主要是提供连接数据库用的驱动,数据库名称,编码方式,账号密码。

1 <property name="driver"   value="com.mysql.jdbc.Driver" />
2 <property name="url"      value="jdbc:mysql://localhost:3306/test2?characterEncoding=UTF-8" />
3 <property name="username" value="root" />
4 <property name="password" value="123456" />

以及别名,自动扫描mybatis.pojo下的类型,使得在后续配置文件Category.xml中使用resultType的时候,可以直接使用Category,而不必写全mybatis.Category

1 <typeAliases>
2         <package name="mybatis.pojo" />
3 </typeAliases>

映射Category.xml

1     <mappers>
2         <mapper resource="mybatis/pojo/Category.xml" />
3     </mappers>

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     <typeAliases>
 7         <package name="mybatis.pojo" />
 8     </typeAliases>
 9     <environments default="development">
10         <environment id="development">
11             <transactionManager type="JDBC" />
12             <dataSource type="POOLED">
13                 <property name="driver" value="com.mysql.jdbc.Driver" />
14                 <property name="url"
15                     value="jdbc:mysql://localhost:3306/test2?characterEncoding=UTF-8" />
16                 <property name="username" value="root" />
17                 <property name="password" value="123456" />
18             </dataSource>
19         </environment>
20     </environments>
21     <mappers>
22         <mapper resource="mybatis/pojo/Category.xml" />
23     </mappers>
24 </configuration>

5.配置文件Category.xml

在包mybatis.pojo下,新建文件Category.xml

 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 
 6 <mapper namespace="mybatis.pojo">
 7     <select id="listCategory" resultType="Category">
 8         select * from category
 9     </select>
10 </mapper>

namespace="mybatis.pojo"表示命名空间是mybatis.pojo,在后续调用sql语句的时候,会用到它里面定义了一条sql语句:select * from category。这条sql语句用id: listCategory 进行标示以供后续代码调用。resultType="Category" 表示返回的数据和Category关联起来,这里本应该使用的是 mybatis.pojo.Category, 但是因为上一步配置了别名,所以直接使用Category就行了。

6.测试

<1>根据配置文件mybatis-config.xml得到sqlSessionFactory

<2>然后根据sqlSessionFactory得到session

<3>最后通过session的selectList方法,调用sql语句listCategory,listCategory这个就是在配置文件Category.xml中那条sql语句设置的id。执行完毕之后,得到一个Category集合,遍历即可看到数据。

 1 package mybatis.test;
 2 
 3 import java.io.IOException;
 4 import java.io.InputStream;
 5 import java.util.List;
 6 
 7 import org.apache.ibatis.session.SqlSession;
 8 import org.apache.ibatis.session.SqlSessionFactory;
 9 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
10 
11 import mybatis.pojo.Category;
12 
13 public class test {
14     public static void main(String[] args) throws IOException {
15         String resource = "mybatis-config.xml";
16         InputStream inputStream = org.apache.ibatis.io.Resources.getResourceAsStream(resource);
17         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
18         SqlSession session = sqlSessionFactory.openSession();
19         List<Category> cs = session.selectList("listCategory");
20         for (Category c : cs) {
21             System.out.println(c.getName());
22         }
23 
24     }
25

三、基本原理图

1. 应用程序找Mybatis要数据
2. Mybatis从数据库中找来数据
  2.1 通过mybatis-config.xml 定位哪个数据库
  2.2 通过Category.xml执行对应的select语句
  2.3 基于Category.xml把返回的数据库记录封装在Category对象中
  2.4 把多个Category对象装在一个Category集合中
3. 返回一个Category集合

 

posted @ 2018-06-26 12:54  雨落忧伤-  阅读(162)  评论(0编辑  收藏  举报