JAVA 框架 / MYBATIS / MYBATIS系列教材 (一)- 基础 - 入门教程

JAVA 框架 / MYBATIS / MYBATIS系列教材 (一)- 基础侵删

1.为什么需要Mybatis

为什么需要Mybatis

  • Mybatis就是帮助程序猿将数据存入数据库中 , 和从数据库中取数据 .

  • 传统的jdbc操作 , 有很多重复代码块 .比如 : 数据取出时的封装 , 数据库的建立连接等等... , 通过框架可以减少重复代码,提高开发效率。

  • MyBatis 是一个半自动化的ORM框架 (Object Relationship Mapping) -->对象关系映射

  • 所有的事情,不用Mybatis依旧可以做到,只是用了它,所有实现会更加简单!技术没有高低之分,只有使用这个技术的人有高低之别

  • MyBatis的优点

    • 简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件就可以了,易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。
    • 灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。
    • 解除sql与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。
    • 提供xml标签,支持编写动态sql。
    • .......
  • 最重要的一点,使用的人多!公司需要!

平时我们都用JDBC访问数据库,除了需要自己写SQL之外,还必须操作Connection, Statement, ResultSet 这些其实只是手段的辅助类。 不仅如此,访问不同的表,还会写很多雷同的代码,显得繁琐和枯燥。

那么用了Mybatis之后,只需要自己提供SQL语句,其他的工作,诸如建立连接,Statement, JDBC相关异常处理等等都交给Mybatis去做了,那些重复性的工作Mybatis也给做掉了,我们只需要关注在增删改查等操作层面上,而把技术细节都封装在了我们看不见的地方。

步骤 9 : 创建实体类   

准备实体类Category,用于映射表category_


步骤 10 : 配置文件mybatis-config.xml   

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

<property name="driver" value="com.mysql.jdbc.Driver"/>

<property name="url" value="jdbc:mysql://localhost:3306/how2java?characterEncoding=UTF-8"/>

<property name="username" value="root"/>

<property name="password" value="admin"/>


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

<typeAliases>

<package name="com.how2java.pojo"/>

</typeAliases>


映射Category.xml

<mappers>

<mapper resource="com/how2java/pojo/Category.xml"/>

</mappers>


步骤 11 : 配置文件Category.xml   
步骤 12 : 测试类TestMybatis   
步骤 13 : 基本原理图   

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集合

JAVA 框架 / MYBATIS / MYBATIS系列教材 (一)- 基础 - 入门教程

步骤 15 :  练习

参考Category,做一个Product类的mybatis查询。 Product类有三个属性:
int id
String name
float price

15.1创建product_表

USE how2java;
 
CREATE TABLE product_ (
  id int(11) NOT NULL AUTO_INCREMENT,
  name varchar(32) DEFAULT NULL,
  price float default null,
  PRIMARY KEY (id)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
 

15.2导入数据

USE how2java;
INSERT INTO product_ VALUES (null,'product1',100);
INSERT INTO product_ VALUES (null,'product2',101);
INSERT INTO product_ VALUES (null,'product3',102);
INSERT INTO product_ VALUES (null,'product4',103);

JAVA 框架 / MYBATIS / MYBATIS系列教材 (一)- 基础 - 入门教程

15.3创建实体类

准备实体类Product,用于映射表Product_


package com.how2java.pojo;

public class Product {
    private int id;
    private String name;
    private float price;
    
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    
    public float getPrice() {
        return price;
    }
    public void setPrice(float price) {
        this.price = price;
    }
}

15.4配置文件mybatis-config.xml【看不懂可以看步骤10】

<?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">
<configuration>
    <typeAliases>
      <package name="com.how2java.pojo"/>
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/how2java?characterEncoding=UTF-8"/>
                <property name="username" value="root"/>
                <property name="password" value="admin"/>
            </dataSource>
        </environment>
    </environments>
    
    <mappers>
        <mapper resource="com/how2java/pojo/Product.xml"/>
    </mappers>
</configuration>

JAVA 框架 / MYBATIS / MYBATIS系列教材 (一)- 基础 - 入门教程

15.5 配置文件Product.xml

<?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">
 
    <mapper namespace="com.how2java.pojo">
        <select id="listProduct" resultType="Product">

【这条sql语句用id: listProduct进行标示以供后续代码调用。】

【resultType="Product" 表示返回的数据和Product关联起来,这里本应该使用的是 com.how2java.pojo.Product, 但是因为上一步配置了别名,所以直接使用Product就行了】
            select * from   product_     
        </select>
    </mapper>

15.6测试TestProduct

package com.how2java;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

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 com.how2java.pojo.Product;

public class TestProduct {
    public static void main(String[] args) throws IOException {
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession session=sqlSessionFactory.openSession();
         
        List<Product> pd=session.selectList("listProduct");
        for (Product p : pd) {
            System.out.println(p.getName());
        }
         
    }
}

JAVA 框架 / MYBATIS / MYBATIS系列教材 (一)- 基础 - 入门教程

 

上一篇:Mysql学习总结


下一篇:第195天学习打卡(项目 谷粒商城 37新增商品 获取分类下所有属性及分组)