【8.1】mybatis

mybatis

1、MyBatis数据框架介绍

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

2、mybatis使用

  • 导入mybatis依赖的包
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.6</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.7</version>
        </dependency>
  • 在mybatis配置文件或者spring的配置文件中配置数据源。
  • 创建Mapper接口和Mapper映射文件。
  • 在mybatis配置文件中注册映射文件。

3、MyBatis全局配置文件元素详细介绍

properties元素:配置属性的元素,提供了三种配置方式。

  • 首先读取properties子元素。
    <properties>
        <property name="username" value="root"/>
    </properties>
  • 然后读取properties的resource属性对应资源文件。
    <properties resource="db.properties">
    </properties>
  • 最后读取程序传递的参数。

settings元素:可以改变mybatis的运行状态
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

typeAliases元素:提供别名
一个类的类名通常很长,可以使用别名简化。

    <typeAliases>
        <typeAlias type="com.peng.pojo.User" alias="user"/>
    </typeAliases>

typeHandler类型处理器:java和jdbc中的数据类型不大相同,在映射的时候需要使用typeHandler进行类型的转换

  • 内置的类型转换器
    在这里插入图片描述
    在这里插入图片描述
  • 自定义的类型转换器
    继承TypeHandler接口实现自定义和类型转换器。并在resultMap中指定转换器类型。
    <resultMap id="re" type="user">
        <result column="uname" property="uname" 
            typeHandler="com.peng.util.MyTypeHandlerVarchar"/>
    </resultMap>

enviroments:环境选择
一个enviroment标签就代表一个环境。

  • transactionManager:配置的是数据库事务,其中type属性有3种配置方式。
    1、JDBC,采用JDBC方式管理事务,在独立编码中我们常常使用。
    2、MANAGED,采用容器方式管理事务,在JNDI数据源中常用。
    3、自定义,由使用者自定义数据库事务管理办法,适用于特殊应用。
  • property元素:则是可以配置数据源的各类属性,我们这里配置了autoCommit = false,则是要求数据源不自动提交。
  • dataSource标签:是配置数据源连接的信息,type属性是提供我们对数据库连接方式的配置,同样MyBatis提供这么几种配置方式:
    1、UNPOOLED,非连接池数据库
    2、POOLED,连接池数据库(PooledDataSource)。
    3、JNDI,JNDI数据源(JNDIDataSource)。
    4、自定义数据源。

mappers:导入mapper的映射文件

4、Mapper映射文件

mapper的映射文件往往会绑定一个mapper接口,且里面都是一些sql定义,每一个sql对应mapper接口中的一个方法,当然也可以使用注解的方式指定mapper接口方法对应的sql语句。
mapper映射文件:

<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.peng.mapper.UserMapper">

    <select id="getUser" resultType="list">
        select * from user;
    </select>
</mapper>

mapper接口:sql语句也可以直接在注解中使用

@Mapper
public interface UserMapper {
    ArrayList<User> getUser();

    @Select("select * from user where uid=#{uid}")
    ArrayList<User> getUserById(int uid);
    @Insert("insert into user values (#{uname},#{pwd},#{uid},#{gender},#{birthdate},\n" +
            "#{email},#{phone},#{utype},#{address},#{ustatus},#{vip},#{host},#{port});")
    void addUser(User user);
    @Delete("delete from user where uid=#{arg0} and pwd=#{arg1}")
    int delUser(int id,String pwd);
    @Update("update user set uname=#{uname},pwd=#{pwd},gender=#{gender},birthdate=#{birthdate}," +
            "email=#{email},phone=#{phone},utype=#{utype},address=#{address} " +
            "where uid=#{uid}")
    int updateUser(User user);

}

一些重要的参数:

  • mapper标签的namespace:对应mapper接口
  • sql标签:在于我们可以定义一串SQL 语句的组成部分,其他的语句可以通过引用来使用它。
  • resultMap:结果映射集,查询到的结果保存在resultMap格式中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值