MyBatis

Posted pamne

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis相关的知识,希望对你有一定的参考价值。

1.ORM的概念和优势

    概念: 对象关系映射(Object Relational Mapping,简称ORM)是通过使用描述对象和数据库之间映射的元数据,将面向对象语言程序中的对象自动持久化到关系数据库中。

    Mybatis介绍

               1.Mybatis是一个支持普通SQL查询、存储过程和高级映射的有限持久层框架。它消除了绝大部分的jdbc代码,简化了手工设置sql参数,对结果级的检索进行了封装。

               2.Mybatis 可以使用简单的XML或注解方式来配置映射,将pojo(普通凡人Java对象、实体类对象)映射成数据库中的记录

              3.给sql映射文件一个命名空间。程序需要根据命名空间去找到一个具体的映射文件

    优势:ORM是持久化的一种解决方案,它提供以下的四个主要功能

            (1)基本增删改查的API。               session.save(user)等效于执行一条insert语句

            (2)对象或属性查询的API。            session.creatQuery("from User").list()可以查询出表中所有的User对象

            (3)规范映射元数据。                      ORM解决方案需要规范映射的方式,通常会选择XML存储映射元数据,因为XML便于读取和规范格式

            (4)事务控制、延迟加载等优化功能 

    说明对象持久化是一个基本概念,ORM是这个概念的一种解决方案,而Mybatis是ORM的一个实现,是一个完整的ORM工具,提供了上述所有的ORM功能。

2.Mybatis 配置文件

    1>properties属性  

               目的:为了方便查阅和维护数据库信息,可以把数据库信息单独卸载一个文件夹中,以后需要使用时再直接引用即可

      <context:property-placeholder location="classpath:db.properties"/>
      <!-- 配置数据源 -->
      <bean id="dataSource"
        class="org.apache.commons.dbcp2.BasicDataSource">
        <!--数据库驱动 -->
        <property name="driverClassName" value="$jdbc.driver" />
        <!--连接数据库的url -->
        <property name="url" value="$jdbc.url" />
        <!--连接数据库的用户名 -->
        <property name="username" value="$jdbc.username" />
        <!--连接数据库的密码 -->
        <property name="password" value="$jdbc.password" />
                     </bean>

      jdbc.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
      jdbc.url=jdbc:sqlserver://192.168.10.104:1433;databaseName=sa
      jdbc.username=sa
      jdbc.password=123

    2>settings  全局参数配置

         <configuration> 标签下有一个<settings> 子表签,可以用来设置Mybatis框架的运行参数,比如设置二级缓存、延迟加载等。修改配置会影响到Mybatis 整体的行为,因此需要谨慎操作

    3>为实体类定义别名

         1.单个定义别名

                <typeAlias type="com.zy.pojo.Customer" alias="customer"/>     //不区分大小写

          2.批量定义别名

    <!-- 给类起别名,在Mapper文件中可以使用别名 -->
    <typeAliases>
        <package name="com.zy.pojo"/>
    </typeAliases>

    4>类型处理器

                类处理器类型用于Java类型和jdbc类型之间的映射。Mybatis 内置了一些常用的类型处理器,可以将parameterType中传入的参数自动转化为JDBC需要的数据类型

           比如说自动给String 类型的参数加上引号

               1.内置处理器表

               2.自定义类型处理器

                  为了实现类型转换,定义以下约定,比如

                  实体类中的性别属性    ture---->男           false----->女

                             表中的性别属性          1表示男                2表示女

             3.使用Mybatis开发的自定义类型处理器,需要实现TypeHandler 接口或继承BaseTypeHandler抽象类,BaseTypeHandler底层实现了TypeHandler接口,并对接口中的方法

                 做了简单的处 理以方便用户使用,所以用户直接可以继承BaseTypeHandler抽象类 

    5>动态SQL            

          Mybatis 提供了<if>、<where>、<foreach>等标签来实现SQL的动态拼接

         1.<if>

              select * from User where 1=1

             <if 条件>

                  and name like ‘%$name%‘

             <if/>

          2.<where> 可使用where标签替代SQL中的where关键字,并且根据实际情况处理<if>开头的and关键字

            select * from User 

             <where>

              <if 条件>

                    and name like ‘%$name%‘

               <if/>

             <where/>

          3.<foreach>

以上是关于MyBatis的主要内容,如果未能解决你的问题,请参考以下文章

MybatisMyBatis 注解方式的基本 用法

MybatisMyBatis之缓存

MyBatisMyBatis的增删改查

Mybatismybatis登录实例

MybatisMybatis基础(中)

MybatisMybatis缓存