一.基础方式的增删该查:
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. PL/SQL表结构/数据的导出

    1.表结构导出 方法一:在sql页面点击表名,进入表编辑页面,点击右下角“查看SQL”按钮,即可看到表结构 方法二:工具--导出用户对象 去掉所有者勾选项,即***.表名:用户名字在其他用户导入数据库 ...

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

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

  3. PHP四种输出语句

    //echo 深入理解echo ,echo是一个函数 //echo 功能:向浏览器输出一个或多个字符串; //echo 返回值:void 无返回值; echo "今天是个好天气"; ...

  4. bzoj 1009GT考试

    做了上一道题,全程懵逼,再做这一道,,,23333继续 貌似那些东西都是差不多的.(参见cf621E) 这个为什么b[][]+=1很困惑,为什么不是从b[-1][??]转移的呢?想了一下,因为每一次都 ...

  5. SpringBoot之Order注解启动顺序

    order的规则: order的值越小,优先级越高order如果不标注数字,默认最低优先级,因为其默认值是int最大值该注解等同于实现Ordered接口getOrder方法,并返回数字. @Reten ...

  6. oracle11g忘记管理员密码

    oracle的sys和system密码是我们经常忘记的,忘记之后我们可以通过sqlplus来修改重置. 首先打开sqlplus:在运行处可直接输入打开 进入窗口后,首先输入 sqlplus/as sy ...

  7. C#高级编程(第9版) 第08章 委托、lambda表达式和事件 笔记

          本章代码分为以下几个主要的示例文件: 1. 简单委托 2. 冒泡排序 3. lambda表达式 4. 事件示例 5. 弱事件     引用方法 委托是寻址方法的.NET版本.在C++中函数 ...

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

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

  9. promise核心6 自定义promise

    1.定义整体结构(不写实现) 定义一个自己的promise的库 lib(库的简写) 一个js文件.一个js模块(不能用es6  也不能commjs)(用es5模块语法 ) 匿名函数自调用.IIFE ( ...

  10. Win10 MySQL5.7中文乱码问题

    https://blog.csdn.net/hh___56789/article/details/87900923 最好把 utf8 都换成utf8mb4 ,以免以后遇到意想不到的错误.utf8有漏洞 ...