mybatis中的这些小细节你知道吗?

用来定义代码片段,可以将所有的列名,或复杂的条件定义为代码片断,供使用时调用。用来引用定义的代码片段。
摘要由CSDN通过智能技术生成

目录

#{}占位符

${}字符串拼接或字符串替换

  2)字符串替换

返回主键值

UUID

什么是动态sql

指定参数位置

入参是map(重点掌握) 

返回值是map


#{}占位符


  传参大部分使用#{}传参,它的底层使用的是PreparedStatement对象,是安全的数据库访问 ,防止sql注入。
  #{}里如何写,看parameterType参数的类型
  1)如果parameterType的类型是简单类型(8种基本(封装)+String),则#{}里随便写。
 

 <select id="getById" parameterType="int" resultType="users">  ===>入参类型是简单类型
        select id,username,birthday,sex,address
        from users
        where id=#{zar}  ===>随便写
    </select>  


  2)parameterType的类型是实体类的类型,则#{}里只能是类中成员变量的名称,而且区分大小写。

    <insert id="insert" parameterType="users" >  ===>入参是实体类
        insert into users (username, birthday, sex, address) values(#{userName},#{birthday},#{sex},#{address})  ==>成员变量名称
    </insert>


${}字符串拼接或字符串替换


  1)字符串拼接,一般用于模糊查询中.建议少用,因为有sql注入的风险
    也分两种情况,同样的看parameterType的类型
    A. 如果parameterType的类型是简单类型,则${}里随便写,但是分版本,如果是3.5.1及以下的版本,只以写value 

<select id="getByName" parameterType="string" resultType="users">  ===>入参是简单类型
        select id,username,birthday,sex,address
        from users
        where username like '%${zar}%'   ===>随便写
    </select> 

B. 如果parameterType的类型是实体类的类型,则${}里只能是类中成员变量的名称.(少用)

C. 优化后的模糊查询(以后都要使用这种方式) 

 

 <select id="getByNameGood" parameterType="string" resultType="users">
        select id,username,birthday,sex,address
        from users
        where username like concat('%',#{name},'%')
    </select>

  2)字符串替换

  需求:模糊地址或用户名查询  

select * from users where username like '%小%';
select * from users where address like '%市%'



  <!--
    //模糊用户名和地址查询
    //如果参数超过一个,则parameterType不写
    List<Users> getByNameOrAddress(
            @Param("columnName")  ===>为了在sql语句中使用的名称
            String columnName,
            @Param("columnValue")   ===>为了在sql语句中使用的名称
        
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Hibernate和MyBatis都是Java常用的ORM框架,但它们在设计和使用上有很大的差异。 Hibernate是一个全自动ORM框架,它使用对象关系映射技术将Java类映射到关系数据库的表。Hibernate自动维护类和表之间的映射关系,可以自动生成SQL语句,开发人员无需手动编写。Hibernate非常适合处理复杂的关系型数据。 MyBatis则是一个半自动ORM框架,它使用XML或注解将SQL语句映射到Java方法MyBatis通过将SQL和Java代码分离,允许开发人员灵活控制SQL执行的细节,能够满足更加复杂的需求。MyBatis通常被认为是更加灵活和易于调试的ORM框架。 关于它们的优劣,这取决于具体的使用场景和开发人员的个人偏好。一般来说,如果您的应用程序需要处理复杂的关系型数据,Hibernate可能更适合您。如果您需要更细粒度地控制SQL执行细节或对SQL调优有特殊需求,MyBatis可能更适合您。 ### 回答2: Hibernate和MyBatis都是Java的ORM(对象关系映射)框架,用于处理Java对象和数据库之间的数据映射关系。它们有各自的特点和适用场景。 Hibernate是一个全自动的ORM框架,它提供了大量的高级特性和功能,可以轻松处理复杂的映射关系,使开发者可以更快速地开发和维护数据库相关的代码。Hibernate具有良好的透明性,开发者不需要编写大量的SQL语句,只需对实体类进行简单配置和映射,就可以完成对数据库的操作。它也提供了一级、二级和查询缓存等缓存机制,可以提高系统的性能。 然而,Hibernate的配置和学习曲线相对较 steepend,对于初学者来说可能比较复杂。Hibernate对于简单查询的性能比MyBatis稍弱,因为它会将查询语句翻译为完全通用SQL,而不是针对特定的查询进行优化。 相比之下,MyBatis是一个轻量级的ORM框架,它倾向于将数据库操作的控制权交给开发者。MyBatis使用XML或注解配置数据库操作语句,使开发者可以灵活地编写SQL语句,更好地优化和控制查询性能。MyBatis较为适用于对数据库操作较为熟悉的开发者,可以根据需求自由地编写和优化SQL语句。 然而,MyBatis相对于Hibernate缺乏一些高级特性,如二级缓存和自动关联映射等。同MyBatis没有提供与数据库的直接交互,需要开发者手动编写和维护SQL语句。 综上所述,Hibernate适用于复杂的数据映射场景和初学者,可以快速开发和维护数据库相关的代码。而MyBatis适用于对SQL优化和灵活性要求较高的开发者,可以更好地控制查询性能和SQL语句。具体选择哪个框架取决于项目需求和开发者的技术水平。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值