Mybatis 一些细节

  • parameterType 可以忽略掉不写 , 下面是摘自官网文档对它的解释。

将要传入语句的参数的完全限定类名或别名。这个属性是可选的,因为 MyBatis 可以通过 TypeHandler 推断出具体传入语句的参数,默认值为 unset。

如果不写,那么可读性就稍微差一点 , 要求程序员对代码的把握度要高一点,因为有时候,你并不知道现在要传递什么类型进来。当然你可以通过saveUser这样的字眼来识别出来要传递一个user对象。所以,大家按照自己的习惯来选择。[这段话是我想的]

<insert id="saveUser">
    /*下面这行是早期我们执行添加的语句*/
   INSERT INTO  t_user VALUES (NULL , #{username} , #{password});
</insert>

映射文件

重点是resultType . 下面的这段话摘自官网文档对它的描述:

属性 介绍
resultType 从这条语句中返回的期望类型的类的完全限定名或别名。注意如果是集合情形,那应该是集合可以包含的类型,而不能是集合本身。使用 resultType 或 resultMap,但不能同时使用。
resultMap 外部 resultMap 的命名引用。结果集的映射是 MyBatis 最强大的特性,对其有一个很好的理解的话,许多复杂映射的情形都能迎刃而解。使用 resultMap 或 resultType,但不能同时使用。 这个属性一般多用于复杂查询,后面的表关联查询就能看到它的身影了。
<!--查询总数, resultType 用于表示返回结果类型。
    这里的long其实是Long类型,这里写的是别名,其实可以写全路径。别名的声明在
    源码中的 TypeAliasRegistry 中有声明
    查询不写返回值类型,那么是无法获取到结果的。
-->
<select id="findCount" resultType="long">
    SELECT  count(*) FROM  t_user;
</select>

#{} 和 ${} 区别

总体概括: #{} 具有预编译效果, ${}仅仅起到替换作用而已

如果传递的参数就是一个简单类型(String 、 基本数据类型) ,那么#{} 可以写随意的文字, 但是${} 里面只能写 ${value} 。 当然如果传递过来的是对象,那么大家写法都是些对象的属性名。 比如 #{username} | ${username}

模糊查询也可以写成这样

   name like CONCAT("%",?,"%")

猜你喜欢

转载自blog.csdn.net/weixin_41917449/article/details/81200278