mybatis

#{}表示一个占位符,通过ognl来读取属性值
${}表示一个拼接号,将接受到的参数的内容不加任何修饰拼接到sql中。会引用sql注入,所以不建议使用
selectOne表示查询出一条记录进行映射,如果使用selectOne可以实现,那么使用selectList也可以实现(list中只有一个对象)
selectList表示查询一个列表记录

select * from user where user like %${value}%

 insert into user(id, userName, password) values(#{id}, #{userName}, #{password})
id是自增的 可以不写
    <insert id="addUser" parameterType="com.hust.model.User">

        <selectKey  keyProperty="id" order="AFTER"  resultType="java.lang.Integer">
            SELECT LAST_INSERT_ID()
        selectKey>
        insert into user(userName, password) values(#{userName}, #{password})
        
    insert>

uuid
    <insert id="addUser" parameterType="com.hust.model.User">

        <selectKey  keyProperty="id" order="BEFORE"  resultType="java.lang.String">
            SELECT uuid()
        selectKey>
        insert into user(id, userName, password) values(#{id}, #{userName}, #{password})
    insert>

hibearnate:是一个标准的ORM(对象关系映射)框架。入门门槛高,不需要写sql,sql自动生成。
对sql语句进行优化、修改比较困难。
应用场景:适用需求变化不多的中小型项目。

mybatis:专注sql本身,需要程序员自己编写sql语句。sql修改,优化比较方便。它是一个不完全的ORM框架。
mybatis也可以实现映射(输入输出映射)
适用于需求变化较多的项目,比如互联网项目。

mapper代理方法
编写mapper接口(相当于dao接口),需要遵循一些开发规范,mybatis可以自动生成mapper接口实现类代理对象
编写mapper.xml映射文件

开发规范
1、mapper.xml
namespace 命名空间,作用就是对sql进行分类管理,理解sql隔离
2、mapper.java接口中的方法名和mapper.xml中的statement的id一致
3、mapper.java接口中的方法参数类型、返回类型和mapper.xml中的statement的perameterType、resultType一致。

mapper接口方法的参数只能有一个,如果需要多个参数,则需要封装成一个对象来作为参数
即可以使用包装类型的pojo满足不同的业务方法的需求,但service中建议不要使用包装类型

POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans

mybatis默认支持的别名
int  long  bigDecimal等基本的数据类型
    <typeAliases>

        <typeAlias alias="User" type="com.hust.model.User" />

        <package name="com.hust.model"/>
        <package name="com.hust.model"/>
    typeAliases>

typeHandlers类型处理器
通常mybatis提供的类型处理器能满足日常需求

<configuration>
    <typeAliases>

        <typeAlias alias="User" type="com.hust.model.User" />

        <package name="com.hust.model"/>
        <package name="com.hust.model"/>
    typeAliases>

    <mappers>

        <mapper resource="com/hust/mapping/UserMapper.xml" />

        <mapper class="com.hust.dao.UserMapper"/>

        <package name="com.hust.dao"/>
    mappers>
configuration>

Original: https://www.cnblogs.com/muhe221/p/8950478.html
Author: 牧 天
Title: mybatis

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/543315/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 根据表结构自动生成JavaBean,史上最强最专业的表结构转JavaBean的工具(第12版)

    目录: 第1版:http://blog.csdn.net/vipbooks/article/details/51912143 第2版:http://blog.csdn.net/vi…

    Java 2023年6月9日
    093
  • Lambda表达式看这篇基本就够用了

    本文讯】 2020.05.08 polo 写博不易,尊重知识! Lambda 是java8 引入的一个新特性,闭包,又叫函数式接口,下面介绍下,常用的lambda表达式方式: 所谓…

    Java 2023年6月16日
    079
  • C#与Java互通AES算法加密解密

    /// /// <returns>&#x5BC6;&#x6587;</returns> public static string Encod…

    Java 2023年5月29日
    077
  • Win10离线安装.NET Framework 3.5的方法技巧

    很多办公环境是没有外网的,而Win10又不自带.net 3.5,导致很多运行在.net 2.0\3.0\3.5的程序无法正常运行,所以存在Win10上离线安装.net 3.5的需求…

    Java 2023年6月5日
    077
  • Java反射的总结

    Java Reflection 反射是被视为动态语言的关键,反射机制允许程序执行期借助于Reflection。API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。 加…

    Java 2023年6月8日
    0102
  • Java8 Stream流式编程,极大解放你的生产力!

    java8自带常用的函数式接口 Predicate<t> boolean test(T t)</t> 传入一个参数返回boolean值 Consumer&l…

    Java 2023年5月29日
    074
  • 分享两个实用的shell脚本

    各位,早上好啊~ 发现许久没有分享过技术文章了,今天分享两个部署项目时候比较实用的shell脚本 一键部署shell脚本 由于个人部署,会习惯把jar放到lib目录下面,如果你没有…

    Java 2023年6月13日
    084
  • java延时队列 示例

    /** * @desc: java 延时队列 思路:使&#x7528…

    Java 2023年5月29日
    080
  • 利用Redis对批量数据实现分布式锁

    在开发的 &#x6536;&#x5165;&#x7ED3;&#x8F6C;&#x5E73;&#x53F0;&#x754C;&…

    Java 2023年6月7日
    070
  • 【Java中的线程】java.lang.Thread 类分析

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Java 2023年6月9日
    092
  • Spring Cloud Alibaba 使用Gateway作为服务网关

    从没有网关的角度来看后台如有N个服务,那么前端则需要对接N个服务;只要后台修改IP或者端口等任何信息那么前端也需要修改。当服务对接了网关后前端只需要统一调用网关入口即可,具体调用那…

    Java 2023年6月5日
    092
  • 如何求源码,反码,补码

    最近有朋友问起这些,于是就简单的讲一下吧(只讲求法,没有包含真正的意义)。 源码怎么求 //原码就是早期用来表示数字的一种方式,用最高位表示符号位,最高位为’1’表示负号,’0’表…

    Java 2023年6月5日
    086
  • Java 之 String 类型

    因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象,有其它对象没有的一些特性。 首先String不属于8种基本数据类型(byte, char,…

    Java 2023年5月29日
    065
  • 不止面试—jvm类加载面试题详解

    面试题 带着问题学习是最高效的,本次我们将尝试回答以下问题: 什么是类的加载? 哪些情况会触发类的加载? 讲一下JVM加载一个类的过程 什么时候会为变量分配内存? JVM的类加载机…

    Java 2023年6月15日
    089
  • 设计模式 09 组合模式

    组合模式(Composite Pattern)属于 结构型模式 概述 组合模式实际上就是将多个组件进行组合,让用户可以对它们进行一致性处理。 比如文件夹,一个文件夹中可能包含有很多…

    Java 2023年6月6日
    0127
  • easyUI 自定义排序datagrid

    @author YHC 如果默认的排序行为不满足你的需求,你可以自定义datagrid排序行为. 最基础的用户可以定义一个排序函数,函数名是s orter 在列上,这个函数将接受两…

    Java 2023年5月29日
    065
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球