• 笔记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集合

  • 相关阅读:
    NLPIR的语义分析系统
    [译] 12步轻松搞定python装饰器
    python实现爬取千万淘宝商品的方法_python_脚本之家
    Deep Learning(深度学习)学习笔记整理系列 | @Get社区
    那些年,曾经被我们误读的大数据
    值得关注的10个python语言博客
    淘宝的评论归纳是如何做到的?
    pycharm激活码
    Windows下配置Qt 5.8+opencv 3.1.0开发环境
    Ubuntu安装opencv3.1.0后配置环境变量
  • 原文地址:https://www.cnblogs.com/lyj-gyq/p/9228573.html
Copyright © 2020-2023  润新知