初识MyBatis

MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录。

引至https://www.yiibai.com/mybatis/

MyBatis需要手工匹配提供POJO、SQL和映射关系

核心组件:

SqlSessionFactoryBuilder:会根据配置信息或代码来生成SqlSessionFactory

SqlSessionFactory:用来生成SqlSession的工厂

SqlSession:是一个既可以发送SQL去执行并返回结果,也可以获取Mapper的接口

创建一个java项目

将所需的依赖写入maven配置文件

注意:仍需jdbc的包,因为MyBatis是基于jdbc接口的框架

pom.xml如下

    <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.1</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.0.5</version>
    </dependency>

创建好的项目目录结构如下:

-首先创建数据库和User表

-创建MyBatis配置文件mybatis.cfg.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">
<configuration>
    <!-- typeAliases 给实体类设置一个别名-->
    <typeAliases>
        <typeAlias type="com.mh.models.User" alias="User"/>
    </typeAliases>
    <!-- Mybatis的environment标签根据环境动态引入指定的dataSource
        default="development"开发模式
    -->
    <environments default="development">
        <environment id="development">
            <!-- 事务管理器的配置-->
            <transactionManager type="JDBC"/>
            <!-- 数据源的配置
            UNPOOLED - 这个数据源的实现只是每次请求时打开和关闭连接。
            POOLED - 这种数据源的实现利用“池”的概念将JDBC连接对象组织起来,
            避免了创建先的连接实例时所必须的初始化和认证时间。
            这是一种使得并发WEb应用快速响应请求的流行的处理方式。-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://127.0.0.1:3306/yiibai"/>
                <property name="username" value="root"/>
                <property name="password" value="sasa"/>
            </dataSource>
        </environment>
    </environments>
</configuration>

-创建实体类User

package com.mh.models;

public class User {
    private int id;
    private String name;
    private String dept;
    private String phone;
    private String website;

    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 String getDept() {
        return dept;
    }

    public void setDept(String dept) {
        this.dept = dept;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getWebsite() {
        return website;
    }

    public void setWebsite(String website) {
        this.website = website;
    }
}

-创建实体类映射文件User.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.mh.mapper.UserMapper">
    <!--自定义返回结果集-->
    <resultMap id="userMap" type="User">
        <id property="id" column="id" javaType="java.lang.Integer"></id>
        <result property="name" column="name" javaType="java.lang.String"/>
        <result property="dept" column="dept" javaType="java.lang.String"/>
        <result property="website" column="website" javaType="java.lang.String"/>
        <result property="phone" column="phone" javaType="java.lang.String"/>
    </resultMap>

    <!--在各种标签中的id属性必须与接口中的方法名相同,id属性值必须是唯一的,不能够
    重复使用。
    parameterType属性指明查询时使用的参数类型
    resultType指明查询返回的结果集类型
    -->
    <select id="getUserById" parameterType="int" resultMap="userMap">
      select * from user where id=#{id}
    </select>
</mapper>

-对应的模型查询接口

package com.mh.mapper;

import com.mh.models.User;

public interface UserMapper {
    public User getUserById(int id) throws Exception;
}

-测试类

package com.mh.service;

import com.mh.mapper.UserMapper;
import com.mh.models.User;
import com.mh.tools.DBTools;
import org.apache.ibatis.session.SqlSession;

public class UserService {
    private static void selectUserById(){
        SqlSession session=DBTools.getSession();
        UserMapper mapper=session.getMapper(UserMapper.class);
        try {
            User user=mapper.getUserById(1);
            System.out.println(user.getId());
            System.out.println(user.getName());
            System.out.println(user.getDept());
            System.out.println(user.getWebsite());
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
    public static void main(String[] args){
        System.out.println("hello");
        selectUserById();
    }
}

 

posted @ 2018-08-09 16:45  SakalakaZ  阅读(174)  评论(0编辑  收藏  举报