当使用Mybatis实现数据访问时,主要:
1,编写数据访问的抽象方法
2,配置抽象方法对应的SQL语句
关于抽象方法:
1.1 必须定义在某个接口中,这样的接口通常使用Mapper作为名称的后缀,例如AdminMapper
方法返回值类型:
1.2 如果要执行的数据是增,删,改类型的,同意使用int作为返回值类型,表示"受影响的行数",也可以使用void,但不推荐
1.3 如果要执行的是查询操作,返回值类型只需要能够装在所需的数据即可
1.4 方法的名称:自定义,不要重载,建议风格如下:
--插入数据使用'insert' 作为方法名称中的前缀或关键字
--删除数据使用'delete' 作为方法名称中的前缀或关键字
--更新数据使用'update' 作为名称中的前缀或关键字
-- 查询数据时:
· 如果是统计, 使用'count' 作为方法名称中的前缀或关键字
· 如果是单个数据,使用'get' 或者'find' 作为方法名称中的前缀或关键字
· 如果是列表,使用'list' 作为方法名称中的前缀或关键字
· 如果操作数据时有条件,可以在以上前缀或关键字右侧添加'by字段名'. 例如'deleteById'
1.5 方法的参数列表: 取决于需要执行的SQL 语句中有哪些参数,如果有多个参数,可将这些参数封装在同一个类型中,使用封装的类型作为方法的参数类型
封装:
封装后使用:
insert(增加)
1.SQL语句中的参数值使用#{}格式的占位符表示;
2. 自增Id 问题:
通常表中看的id是自动编号的,则需要在获取新增的数据的id时,需要先使得插入的数据类型中有id对应的属性, 还是以Admin类中添加id属性为例:
还要在<insert> 节点配置2个属性,分别是useGeneratedKeys 和keyProperty:
当配置完成后,Mybatis执行此插入数据的操作后,会将自动编号的id赋值到参数Admin admin 的id 属性中, 以上keyProperty值的就是将自动编号的值放回到参数对象的哪个属性中.
删除(delete)
删除一般比较简单,主要是根据某一个条件删除,不涉及映射:
update(修改)
在默认的情况下,当Java程序源代码(.java文件)经过编译后,所有局部变量的名称都会丢失,为使得配置SQL语句时可以根据指定的名称使用方法中的参数,需要在方法参数的各参数前添加@Param以指定名称:
如果方法参数只有一个,则可不使用@Param指定名称,因为Mybatis可以直接找到此参数的值.
(关于@Param 更多对应关系,可以参考:parameterType 用法_香气袭人知骤暖的博客-CSDN博客_parametertype)
关于理解"经过编译后,所有局部变量的名称都会丢失"问题,简单示例,仅仅帮助大家理解, 图片可能会不对:
编译前:
编译后名字都不存在了:
注意:增, 删, 改的返回值建议是int 类型, 当然也可以是void ,虽然不会报错,