零基础学JavaWeb开发(十七)之 mybatis(2)
创始人
2024-05-14 20:33:06

5、MyBatis - 映射文件标签

5.1、映射文件的顶级元素

select:映射查询语句

insert:映射插入语句

update:映射更新语句

delete:映射删除语句

sql:可以重用的 sql 代码块

resultMap:最复杂,最有力量的元素,用来描述如何从数据库结果集中加载你的对象

cache:配置给定命名空间的缓存

cache-ref:从其他命名空间引用缓存配置

5.2、select 标签的属性信息

id="selectUser"parapeterType="int"resultType="hashmap"resultMap="USER_RESULT_MAP"flushCache="false"useCache="true"timeout="10000"fetchSize="256"statementType="PREPARED"resultSetType="FORWORD_ONLY"
>

5.3、resultMap 标签的属性信息


      

5.4、insert 标签的属性信息

id="insertProject"paramterType="projectInfo" useGeneratedKeys="true"keyProperty="projectId"
>

5.5、重用 sql 标签

id,username,password

5.6、完全限定名使用别名替代

每个 sql 映射文件的要元素中,都需要指定一个名称空间,用以确保每个映射语句的 id 属性不会重复。如

在 Java 代码中引用某个 sql 映射时,使用的亦是含有名称空间的全路径。如

session.update("com.mayikt.mapper.UserMapper.udpateUser", user);

6、mybatis多条件查询

6.1、mybatis多条件查询

第一种方法 传递map 型;

第二种方法:多个参数如果不封装成Map 参数值需要通过,多个参数的时候要使用 @Param 给指定参数,否则会出现找不到参数的错误

第三种方法:传递pojo ; 非常多参数 sql语句中获取参数值名称 与对象成员属性名称需要保持一致

List getByIdFlightParameterMap(Map parameterMap);List getByIdFlightParameter(@Param("company") String company,@Param("departureAirport") String departureAirport,@Param("arriveAirport") String arriveAirport);List getByIdFlightPoJo(FlightEntity flightEntity);
    

6.2、mybatis动态条件查询

动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似的框架,你应该能理解根据不同条件拼接 SQL 语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL,可以彻底摆脱这种痛苦。

使用动态 SQL 并非一件易事,但借助可用于任何 SQL 映射语句中的强大的动态 SQL 语言,MyBatis 显著地提升了这一特性的易用性。

如果你之前用过 JSTL 或任何基于类 XML 语言的文本处理器,你对动态 SQL 元素可能会感觉似曾相识。在 MyBatis 之前的版本中,需要花时间了解大量的元素。借助功能强大的基于 OGNL 的表达式,MyBatis 3 替换了之前的大部分元素,大大精简了元素种类,现在要学习的元素种类比原来的一半还要少。

  • if
  • choose (when, otherwise)
  • trim (where, set)
  • foreach

mysql 加上输出日志

    


    

缺陷 如果没有传递company 导致sql报错

  

可以使用

7、mybatis注解开发

8、问题

8.1、常见问题1

alt+enter 选择第一个

8.2、常见问题2

Mapped Statements collection does not contain value for getByUsersAll

没有找到该getByUsersAll 对应sql语句 没有将Mapped 交给mybatis扫描到

8.3、常见问题3

Could not find resource mybatis/userMapper2.xml

clean 清除 编译class

常见问题4

Cause: org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Mapped Statements collection already contains value for userMapper.getByUsers

相关内容

热门资讯

阿西吧是什么意思 阿西吧相当于... 即使你没有受到过任何外语培训,你也懂四国语言。汉语:你好英语:Shit韩语:阿西吧(아,씨발! )日...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...