发布网友 发布时间:2022-09-17 03:19
共1个回答
热心网友 时间:2023-10-14 21:43
mybatis最初配置信息是基于 XML ,映射语句(SQL)也是定义在 XML 中的。而到了 MyBatis 3提供了新的基于注解的配置。
这里讲述 注解开发方式:
首先我们需要获取 SqlSession:
参数设置为 true 表示开启自动提交模式。
session 在注解形式的使用方式如:
所以mybatis 的使用使用三部分:
这里主要讲解 Mapper 层的开发规则。
sql 类型主要分成 : select @Select(${sql}) , update @Update(${sql}) , insert @Insert($sql) , delete (${sql}) .
@Results用来设置table信息与bean相关字段的映射关系, 每一个字段的关系使用 @Result控制。
默认情况下对于每一table字段,例如 name , 会调用 bean 中的 setName(..) . 如果找不到,对于新版本的 mybatis 会报错。
例如上面的 cluster_name 会调用 setCluster_name() . 但是java 中使用的 clusterName ,可以通过 Result注解控制.
@ResultMap可以通过Id,应用其他的Results
还有一种更改映射的方式:
mapUnderscoreToCamelCase设置为true, 之后会自动实现 mysql 中的unix命名方式转为java的驼峰表示法。
@MapKey此注解应用将查询数据转为 Map<>, 注意的是MapKey()中的id最终调用bean的getId 获取数据,所以需要映射bean字段而不是table.
@Param注解用于给方法参数起一个名字。以下是笔者总结的使用原则:
在方法只接受一个参数的情况下,可以不使用@Param。
在方法接受多个参数的情况下,建议一定要使用@Param注解给参数命名。
insert 时获取自增主键的方式:
法一:
法二:
#{} 的作用主要是替换预编译语句(PrepareStatement)中的占位符 ? :
对于 : INSERT INTO user (name) VALUES (#{name}); ==> INSERT INTO user (name) VALUES (?);
${} 符号的作用是直接进行字符串替换:
对于 : INSERT INTO user (name) VALUES ('${name}'); ==> INSERT INTO user (name) VALUES ('tiansho');