一.基础方式的增删该查:
1.mybatis约定:输入参数parameterType和输出参数resulrType在形式上只能有一个。
2.如果输入/输出参数:是简单类型(8个基本类型加String)则可以使用任何占位符,#{xxx};
                                如果是对象类型,则必须是对象的属性,#{属性名}。
3.输出参数:如果返回值类型是一个对象(如Person),则无论返回一个还是多个,在resultType都写成org.lanqiao.entity.Person,即resultType="org.lanqiao.entity.Person"。
4.注意事项:a.如果使用的是JDBC事务方式则需要commit手动提,即session.commit();
                    b.所有的标签<select>.<update>等,都必须有sql语句,但sql参数值可选
                        sql有参数:session.insert(statement,参数值);
 
二.mapper动态代理方式的CRUD(MyBatis接口开发):
原则:约定优于配置
硬编码方式:abc.java
                                    Configuration conf=new Configuration();
                                    conf.setName("myProject");
配置方式:abc.xml
                                <name>myProject</name>
约定:默认值是myProject
 
具体实现的步骤:
1.基础环境:mybatis.jar/ojdbc.jar/conf.xml/mapper.xml
2.(不同之处)约定的目标:省略掉statement,即根据约定,直接可以定位到sql语句。
    a.接口,接口中的方法必须遵循以下约定:
          1)方法名和mapper.xml文件中标签的id值相同;
          2)方法的输入参数和mapper.xml文件中标签的parameterType类型一致;
          3)方法的返回值和mapper.xml文件中标签的resultType类型一致;
除了以上约定,要实现接口中的方法和Mapper.xml中的SQL标签一一对应,还需要以下一点:
    1)namespace的值,就是接口的全类名(接口-mapper.xml一一对应)
匹配的过程:(约定的过程)
1.根据接口名找到mapper.xml文件
2.根据接口的方法名找到mapper.xml文件中的sql标签(方法名=sql标签的id)
习惯:SQL映射文件(mapper.xml)和接口放在同一个包中(注意修改conf.xml文件中加载mapper.xml的路径)
代码:PersonMappe personMapper=session.getMapper(PersonMapper.class);
     personMapper.方法
 
优化:
1.可以将配置信息单独放入db.properties文件中,然后再动态引入
db.properties;
    k=v
<properties resource="db.properties"/>
引入之后使用${key}
2.Mybaites全局参数
    <settings>
            <setting/>
    <settings/>
3.别名:(定义别名时大小写无所谓)
    a.设置单个别名
    b.设置批量别名
除了自定义别名外,MyBatis还内置了一些常见类的别名。
 
三.类型转换器:
1.MyBatis自带的一些常见的类型处理器
    int——number
2.自定义MyBatis类型处理器
    Java——数据库(jdbc类型)
自定义类型转换器(boolean-number)步骤:
a.创建转换器:需要实现TypeHandler接口
        要实现转换器有两种选择:(1)实现接口TypeHandler接口
                                                 (2)继承BaseTypeHandler
b.配置conf.xml
 
注意:设置Integer时必须是大写。
 
resultMap可以实现2个功能:
1.类型转换
2.属性-字段的映射关系
 

Mybatis入门——基础方式的增删该查、mapper动态代理方式的CRUD、类型转换器的更多相关文章

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

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

  2. MyBatis开发Dao层的两种方式(Mapper动态代理方式)

    MyBatis开发原始Dao层请阅读我的上一篇博客:MyBatis开发Dao层的两种方式(原始Dao层开发) 接上一篇博客继续介绍MyBatis开发Dao层的第二种方式:Mapper动态代理方式 Ma ...

  3. MyBatis开发Dao的原始Dao开发和Mapper动态代理开发

    目录 咳咳...初学者看文字(Mapper接口开发四个规范)属实有点费劲,博主我就废了点劲做了如下图,方便理解: 原始Dao开发方式 1. 编写映射文件 3.编写Dao实现类 4.编写Dao测试 Ma ...

  4. Mybatis之旅第二篇-Mapper动态代理方式

    一.引言 通过上一篇mybatis的入门学习,我们已经会使用mybatis实现简单的增删改查,但是我们也发现了用原始Dao开发的一些问题: Dao方法体存在重复代码:通过SqlSessionFacto ...

  5. 02.MyBatis在DAO层开发使用的Mapper动态代理方式

    在实际开发中,Mybatis作用于DAO层,那么Service层该如何调用Mybatis Mybatis鼓励使用Mapper动态代理的方式 Mapper接口开发方法只需要程序员编写Mapper接口(相 ...

  6. Mybatis框架三:DAO层开发、Mapper动态代理开发

    这里是最基本的搭建:http://www.cnblogs.com/xuyiqing/p/8600888.html 接下来做到了简单的增删改查:http://www.cnblogs.com/xuyiqi ...

  7. Mybatis Mapper动态代理方式 typeAliases 别名的使用

    目录结构及配置文件与原始dao方法相比更简便 只需一个UserMapper的接口,放在一起的配置文件,配置文件中namespace的地址确定jdk动态代理的对象 <?xml version=&q ...

  8. mybatis开发Dao的Mapper动态代理方式

    1. 开发规范Mapper接口开发方法只需要程序员编写Mapper接口(相当于Dao接口),由Mybatis框架根据接口定义创建接口的动态代理对象,代理对象的方法体跟Dao原始方法中接口实现类的方法相 ...

  9. Mapper动态代理方式

    开发规范 Mapper接口开发方法只需要程序员编写Mapper接口(相当于Dao接口),由Mybatis框架根据接口定义创建接口的动态代理对象,代理对象的方法体同Dao接口实现类方法. Mapper接 ...

随机推荐

  1. MacOS Safari无响应卡死解决方法

    之前也是用的好好的,突然一次进入一个网页就卡死了,强制退出,后面再重新进入Safari都会处于卡死状态,一直找不到解决方法,Safari也不能卸载重装,想着得等到更新系统或者重装系统,今天看到贴吧一个 ...

  2. openstack trove实例状态转换条件--Mitaka版本

    今天研究了一下trove的instance状态转换条件.发现其实设计的挺复杂的.后来思考了一下这样设计的原因.我觉得大致是因为,如果instance的状态全部来自于instance上跑的数据库服务本身 ...

  3. sql拆分列 时间拆分 日、月、年

    我想 查看今日访问人数 需要分组查询 就得 时间拆分 这两天百度 方法有很多 substring ... 但是 我这一列 是时间类型: 可以直接用 DATEPART() 函数用于返回日期/时间的单独部 ...

  4. 【LeetCode】四数之和

    [问题]给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找 ...

  5. 剑指offer_1.24_Day_4

    构建乘积数组 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1] ...

  6. C# ASP 面试题 2017

    在博客上看到的,感觉还不错 https://www.cnblogs.com/renyiqiu/p/6435261.html

  7. 《机实战》第2章 K近邻算法实战(KNN)

    1.准备:使用Python导入数据 1.创建kNN.py文件,并在其中增加下面的代码: from numpy import * #导入科学计算包 import operator #运算符模块,k近邻算 ...

  8. 获取网站IP地址(Linux,C)

    #include <netdb.h> #include <stdio.h> #include <unistd.h> #include <stdlib.h> ...

  9. SQL inner join, join, left join, right join, full outer join

    基本信息 创建两个表a1, a2. 两个表的重要差别是:a1 中有5,'wu',a2中没有. a2中有 4,'li',而a1中没有. 创建表和插入数据的代码如下: -- 创建a1表 create ta ...

  10. 2020/1/30 PHP代码审计之文件上传漏洞

    0x00 漏洞简介 文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力.这种攻击是最为直接和有效的,"文件上传"本身是没有问题,有问题的是 ...