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>

当输入参数是简单类型或者一般对象类型(除集合和数组外),可以直接指定,但是如果输入参数是集合或者数组类型,就需要使用<foreach>标签来完成参数的处理。

            适用途径:数据的批量操作

             

    <select  id="queryUser" parameterType="java.util.List" resultType="student">
//1. int[]
//2.                      Object[]
select * from user <where>       <if test="list!=null and list.size()>0">
//1. test="array!=null and array.length>0"
    //2.test="array!=null and array.length>0"
           <foreach collection="list" open="userid in("close=") item="user" separator>  
//1. array
//2. array
        #{userid}          </foreach>        </if>     </where>   </select>

              假设list 集合中有 01,02,03 则完整的sql语句:select  * from user where userid in ('01','02','03')

    4.sql片段提取   

        目的:增加代码的复用性

         根据id导入   

         <include refid="sql的id">

MyBatis 框架 基础应用的更多相关文章

  1. MyBatis框架基础详细开发流程

    MyBatis 项目已托管到GitHub,大家可以去GitHub查看下载!并搜索关注微信公众号 码出Offer 领取各种学习资料! 一.框架概述 1.1 什么是框架? 软件的半成品,解决了软件开发过程 ...

  2. Mybatis框架基础入门(三)--Mapper动态代理方式开发

    使用MyBatis开发Dao,通常有两个方法,即原始Dao开发方法和Mapper动态代理开发方法. 原始Dao开发方法需要程序员编写Dao接口和Dao实现类,此方式开发Dao,存在以下问题: Dao方 ...

  3. Mybatis框架基础支持层——日志模块(8)

    前言: java开发中常用的日志框架有Log4j,Log4j2,Apache Commons Log,java.util.logging,slf4j等,这些工具对外的接口不尽相同.为了统一这些工具的接 ...

  4. Mybatis框架基础支持层——反射工具箱之Reflector&ReflectorFactory(3)

    说明:Reflector是Mybatis反射工具的基础,每个Reflector对应一个类,在Reflector中封装有该类的元信息, 以及基于类信息的一系列反射应用封装API public class ...

  5. Mybatis框架基础入门(一)--简介及优势

    一.什么是Mybatis 这里借用官网的一句话介绍什么是mybatis:MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC ...

  6. Mybatis框架 基础

    思维导图 @有对应的例子 @1接入数据库 配置文件 <?xml version="1.0" encoding="UTF-8" ?> <!DOC ...

  7. Mybatis框架基础支持层——反射工具箱之MetaClass(7)

    简介:MetaClass是Mybatis对类级别的元信息的封装和处理,通过与属性工具类的结合, 实现了对复杂表达式的解析,实现了获取指定描述信息的功能 public class MetaClass { ...

  8. Mybatis框架基础支持层——反射工具箱之实体属性Property工具集(6)

    本篇主要介绍mybatis反射工具中用到的三个属性工具类:PropertyTokenizer.PropertyNamer.PropertyCopier. PropertyTokenizer: 主要用来 ...

  9. Mybatis框架基础支持层——反射工具箱之对象工厂ObjectFactory&DefaultObjectFactory(5)

    ObjectFactory官方简介:MyBatis每次创建结果集对象的新实例时,它都会使用一个对象工厂(ObjectFactory)实例来完成. 默认的对象工厂需要做的仅仅是实例化目标类,要么通过默认 ...

随机推荐

  1. SQL Server 2012设置某用户对某些表的记录限制其删除操作

    第一步:用sa用户进入SSMS: 第二步:在安全性---用户上面点击右键---"属性": 第三步:在选择页中选择”安全对象“,点击”搜索“,弹出添加对象页面,这里默认为特定对象不用 ...

  2. Java 添加、修改PPT幻灯片中的表格

    本文将介绍通过Java编程在PPT操作表格的方法.包括添加表格到PPT幻灯片,并设置表格样式.单元格对齐方式.单元格背景色.边框样式.字体.字号.合并单元格等:同时,通过加载已有表格的幻灯片也可以对表 ...

  3. AJAX异步提交form表单

    记录: 网上有说怎么做,没说怎么接收,打印了一下数据,记录一下取值: 比如说有如下form: <form id="form1" name="form1" ...

  4. 小范笔记:ASP.NET Core API 基础知识与Axios前端提交数据

    跟同事合作前后端分离项目,自己对 WebApi 的很多知识不够全,虽说不必要学全栈,可是也要了解基础知识,才能合理设计接口.API,方便与前端交接. 晚上回到宿舍后,对 WebApi 的知识查漏补缺, ...

  5. Spring3 springMVC添加注解式WebSocket

    Spring3添加注解式WebSocket 推荐升级成spring4以后,spring4已经集成WebSocket. 由于种种原因,项目开发处于快结束的阶段了,升级成spring4不想那么麻烦,但是又 ...

  6. SQLServer性能优化之---数据库级日记监控

    上节回顾:https://www.cnblogs.com/dotnetcrazy/p/11029323.html 4.6.6.SQLServer监控 脚本示意:https://github.com/l ...

  7. 【无线安全实践入门】网络扫描和ARP欺骗

    文中可能存在错误操作或错误理解,望大家不吝指正. 同时也希望可以帮助到想要学习接触此方面.或兴趣使然的你,让你有个大概的印象. !阅前须知! 本文是基于我几年前的一本笔记本,上面记录了我学习网络基础时 ...

  8. Java学习笔记之---基础语法

    Java学习笔记之---基础语法 一. Java中的命名规范 (一)包名 由多个单词组成时,所有字母小写(例如:onetwo) (二)类名和接口 由多个单词组成时,所有单词首字母大写(例如:OneTw ...

  9. 把 python 程序打包成 egg 或者 whl 安装包

    原文出处:http://www.worldhello.net/2010/12/08/2178.html 本文略有改动 1.1 安装setuptools 首先要安装setuptools工具.Debian ...

  10. sql server编写通用脚本实现获取一年前日期的方法

    问题: 在数据库编程开发中,有时需要获取一年前的日期,以便以此为时间的分界点,查询其前后对应的数据量.例如:1. 想查询截止到一年前当天0点之前的数据量,以及一年前当天0点开始到现在的数据量.2. 想 ...