一.基础方式的增删该查:
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. POJ - 3349 Snowflake Snow Snowflakes (哈希)

    题意:给定n(0 < n ≤ 100000)个雪花,每个雪花有6个花瓣(花瓣具有一定的长度),问是否存在两个相同的雪花.若两个雪花以某个花瓣为起点顺时针或逆时针各花瓣长度依次相同,则认为两花瓣相 ...

  2. 群论&Polya计数

    群论&Polya计数 其实在我听课的过程中,我发现针对于学习OI中的群并没有什么过多必要向内学习... 群 以后会补的. 就是\(QQ\)群. 置换 置换就是一个... \[ \begin{m ...

  3. 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:Spring实例化Bean的三种方法

    在面向对象的程序中,要想调用某个类的成员方法,就需要先实例化该类的对象.在 Spring 中,实例化 Bean 有三种方式,分别是构造器实例化.静态工厂方式实例化和实例工厂方式实例化. 构造器实例化 ...

  4. python 简单字符串字典加密

    1 def crypt(source,key): from itertools import cycle result='' temp=cycle(key) for ch in source: res ...

  5. 洛谷 P2341 [HAOI2006]受欢迎的牛|【模板】强连通分量

    题目传送门 解题思路: 先求强联通分量,缩点,然后统计新图中有几个点出度为0,如果大于1个,则说明这不是一个连通图,答案即为0.否则入度为0的那个强连通分量的点数即为答案 AC代码: #include ...

  6. AT1983 BBQ Hard 解题报告

    题意 求\(\sum_{i=1}^{n} \sum_{j=i+1}^{n} \dbinom{a_i+a_j}{a_i+b_i+a_j+b_j}\) 解法 考虑\(\dbinom{a_i+a_j}{a_ ...

  7. 干货 | 京东云托管Kubernetes集成镜像仓库并部署原生DashBoard

    在上一篇"Cloud Native 实操系列"文章中,我们为大家介绍了如何通过京东云原生容器实现Eureka的部署(

  8. IO读写

    1.read & write read: 把数据从内核缓冲区复制到进程缓冲区. write: 把数据从进程缓冲区复制到内核缓冲区. 上层程序的IO操作.不是物理设备级别的读写,而是缓存的复制. ...

  9. 使用py-faster-rcnn训练自己的数据集

    https://www.jianshu.com/p/a672f702e596 本文记录了在ubuntu16.04下使用py-faster-rcnn来训练自己的数据集的大致过程. 在此之前,已经成功配置 ...

  10. C语言-再论指针与数组

    指针与数组的天生姻缘1.以指针方式来访问数组元素(1).数组元素使用时不能整体访问,只能是单个访问.访问形式有两种:数组形式和指针形式.(2).数组形式访问数组元素:数组名[下标]:(下标从0开始(3 ...