一.基础方式的增删该查:
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. P4147 玉蟾宫(悬线法求最大子矩阵)

    P4147 玉蟾宫 悬线法 ,\(l_{i,j},r_{i,j},up_{i,j}\) 分别表示 \((i,j)\) 这个点向左,右,上能到达的远点.然后面积就很好办了.具体实现见代码. 然而,还有更 ...

  2. 远程控制使用kill软件映射内网进行远程控制(9.28 第十四天)

    1.能ping通IP情况下远程控制 设置kill软件中的端口.密码.上线列表 2.在软件的Bin\Plugins目录下找到Consys21.dll复制到/phpstudy/www目录下留作生成软件 3 ...

  3. Spring入门之二-------SpringIoC之实例化Bean以及注入Bean

    一.实例化Bean 1. 通过默认构造方法实创建Bean public class Bean1 { public Bean1() { System.out.println(this.getClass( ...

  4. oracle(4)----空值说明

    1. 含义:空值(null)表示未知或者暂时不存在的数据,任何类型(没有约束的条件下)都可以取值null:2. 插入null值: insert into stu (id,name) values(3, ...

  5. MySLQ排序后标记排行

    查询排行及所有(表名.*) 1. ; AS top, customer.* FROM customer 2. AS top, customer.* ) r, customer ORDER BY cus ...

  6. event recorder 学习手记

    #define EventStopA(slot) EventRecord2 (0xEF20U+EventLevelError+((slot) & 0xFU), ((uint32_t) __FI ...

  7. c++ rand随机数生成(随机种子设置)

    需求:每次初始化不同的随机数 1.默认 //这样用每次都会产生相同数字 #include <stdlib.h> #include <stdio.h> #define N 10 ...

  8. javacv 设置帧率(续)

    前文地址:https://www.cnblogs.com/svenwu/p/9663038.html 前文已经对大多数正常情况可以支持了,但是我最近处理一些公司的视频流,发现一些坑爹的情况 每次给的视 ...

  9. android手机客户端测试-思考方向

    来源公开课!!! 1.冒烟测试  Monkey 工具    目标:1.编写adb.exe的Monkey命令. 2.通过logcat定位问题,保证软件的健壮性. 2.安装.卸载测试   2.1   手机 ...

  10. 关于HackerRank的Day 8 的思考——input

    Day 8 主要是对字典的一些基本用法做操作. 题干大概是:给定一个 n ,建立一个包含 n 个人的电话簿,然后有一个查询功能.当然,很简单,但是在我对搜索词的输入时,它提示我:EOF when re ...