SpringBoot 第十二篇 之 SpirngBoot 配置使用Mybatis

1. Mybatis 简介

    a.  Mybatis是支持定制化sql,存储过程,以及高级映射的持久层框架。

    b.  Mybatis 避免了所有jdbc代码,手动设置参数以及获取结果集。

    c.  Mybatis可以对配置和原生Map使用简单的XML或注解,

         将接口和Java的POJO(Plain Old Java Object,普通的Java对象)映射成数据库中的记录。

    d.  Mybatis 是一种SQL 到POJO的模型,它需要我们提供SQL,映射关系(XML或注解,目前以XML为主),

          和POJO。对于sql和pojo的映射关系,它提供自动映射和驼峰映射,使开发工作大大减少。

    e.  MyBatis的配置文件 包括两大部分:一是基础配置文件,二是映射文件。

    f.  Mybatis 所需pom 依赖

         

		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>1.3.1</version>
		</dependency>

2.  MyBatis 的配置

 a.     MyBatis 是基于SqlSessionFactory 构建的框架,SqlSessionFactory的作用是生成SqlSession接口对象,

          这个接口对象是Mybatis操作的核心。

 b.     在Mybatis应用的生命周期中SqlSessionFactory只是为了创建核心接口SqlSession ,

          所以 在Mybatis应用生命周期中SqlSessionFactory是单例的,只存在一个对象。

 c.     构建SqlSessionFactory是通过配置类Configuration完成的,因此对于mybatis-spring-boot-starter

        它会给与我们在配置文件(application.properties)进行Configuration配置的相关内容。

        配置内容如下图:

        

    c1. properties: 

         一般采用spring的配置,而不是mybatis。

    c2. setting: 它的配置将会改变mybatis的底层行为,可以配置映射规则,如自动映射和驼峰映射,

                         执行器类型,缓存等。具体请参考:http://www.mybatis.org/mybatis-3/zh/configuration.html#settings

    c3. typeAliases(类型别名):

                         因为使用类全限定名会比较长,所以mybatis会对常用的类提供默认的别名。

                         此外还允许我们通过typeAliases配置自定义别名。

     c4. typeHandlers (类型处理器) : 

                          这是mybatis 的重要配置之一,在mybatis写入和读取数据库的过程中,

                          对于不同类型的数据(Java是javaType,数据库是jdbcType)进行自定义转换,

                          typeHandlers 一般用于枚举。

      c5. objectFactory(对象工厂):

                            一般使用默认的DefaultObjectFactory就可以,不需任何配置。

      c6.  plugins(插件):

                           又称拦截器,通过动态代理和责任链模式完成,可以修改mybatis底层实现功能。

      c7.  databaseIdProvider(数据库厂商标识):

                            允许mybatis配置多类型数据库支持。

      c8. mappers(映射器):

                        是mybatis最核心的组件,它提供sql和pojo映射关系,这是mybatis开发的核心。

 

  3.  使用示例:

package com.didispace.bean;

import com.didispace.connn.SexEnum;
import lombok.Data;
import org.apache.ibatis.type.Alias;

import javax.persistence.*;

// 下面的@Getter ,@Setter 注解也可用 @Data代替,
// 使用 @Data可直接生成getter,setter
// 标明是一个实体类
// @Alias 为指定别名
@Alias(value="user")
@Data
public class User {

    private Long id;

    private String userName;

    // 性别枚举,这里需要使用typeHandler进行转换
    private SexEnum sex;

    private String note;

}

         

package com.didispace.dao;

import com.didispace.bean.User;
import org.springframework.stereotype.Repository;

// @Repository 用来扫描加载MyBatis接口bean
// 也可使用@Mapper注解
@Repository
public interface UserDao {

    // 方法名getUser 需要和 userMapper select id 一致
    public User getUser(Long id);
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">


<!--
mapper 元素中 namespace 属性,指定一个接口;
select 中 id 代指sql,parameterType 指参数类型,
resultType 指定返回值类型,这里使用了user这是别名(通过POJO(User.java)中@Alias(name="user) )
指定的。如果没有指定,需要用全限定名(com.didispace.bean.User)
-->
<mapper namespace="com.didispace.dao.UserDao">
    <select id="getUser" parameterType="long" resultType="user">
        select id, username,sex,note from t_user where id = #{id}
    </select>
</mapper>

  所有工程代码请参考github:https://github.com/sss996/springboot-mybatis

                         

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值