架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6824|回复: 0

[资料] mybatis笔记之使用Mapper接口注解

[复制链接]
发表于 2019-1-16 13:00:53 | 显示全部楼层 |阅读模式
1. mybatis支持的映射方式

mybatis支持的映射方式有基于xml的mapper.xml文件、基于java的使用Mapper接口class,简单学习一下mybatis使用接口来配置映射的方法。
接口方法注解主要是四个:@Insert、@Delete、@Update、@Select

2. 如何使用接口注解来映射

下面的实验都是基于t_user表的,其结构如下:

2.1 增 @Insert

插入记录的时候麻烦的一点是主键如何生成,对此基本上有三种方案,分别是手动指定(应用层)、自增主键(数据层单表)、选择主键(数据层多表)。

1. 在应用层手动指定主键

手动指定的方式不把主键区别看待,插入之前在应用层生成对象的时候就会给主键一个值,插入的时候与普通字段没啥区别。

在上面的这个例子中,mybatis并不知道到底哪个字段是主键,id虽然是主键字段,但并没有被区别对待。

注意#{username}这种写法,是把User作为了当前上下文,这样访问User的属性的时候直接写属性名字就可以了。

2. 表自增主键

自增主键对应着XML配置中的主键回填,一个简单的例子:

使用Option来对应着XML设置的select标签的属性,userGeneratordKeys表示要使用自增主键,keyProperty用来指定主键字段的字段名。

自增主键会使用数据库底层的自增特性。

3. 选择主键

选择主键从数据层生成一个值,并用这个值作为主键的值。


2.2 删 @Delete

删除的时候只要把语句条件神马的写在@Delete注解的value里就好了,返回一个int类型是被成功删除的记录数。


2.3 改 @Update

修改的时候和删除一样只要把SQL语句写在@Update的value中就好了,返回一个int类型表示被修改的记录行数。


2.4 查 @Select

查询的时候稍稍有些复杂,因为查询会涉及到如何将查出来的字段设置到对象上,通常有那么三种办法:

1. 在SQL语句中手动指定别名来匹配

在写SQL语句的时候,手动为每一个字段指定一个别名来跟对象的属性做匹配,适用于表字段名与对象属性名差异很大没有规律并且表字段不多的情况。


2. 使用mybatis的自动下划线驼峰转换

mybatis有一个选项叫mapUnderscoreToCamelCase,当表中的字段名与对象的属性名相同只是下划线和驼峰写法的差异时适用。

配置了mapUnderscoreToCamelCase之后mybatis在将ResultSet查出的数据设置到对象的时候会尝试先将下划线转换为驼峰然后前面拼接set去设置属性。

开启转换:


QQ截图20190116125812.jpg

然后查询:

查看打印的结果,birth_day属性填充到了对象中:

QQ截图20190116125851.jpg

3. 使用ResultMap

对于表的字段名和对象的属性名没有太大相同点并且表中的字段挺多的情况下,应该使用ResultMap做适配。


@Results对应着XML中的ResultMap,同时可以为其指定一个id,其它地方可以使用这个id来引用它,比如要引用上面的这个Results:

使用@ResultMap来引用一个已经存在的ResultMap,这个ResultMap可以是在Java中使用@Results注解定义的,也可以是在XML中使用resultMap标签定义的。

2.5 样例代码

User.java


UserMapper.java

3. 总结

使用接口注解的优点:

1. 比较方便,快速编写映射语句

使用接口注解的缺点:

1. 适用于比较简单的配置,当太复杂了接口就搞不定了。

2. 不能使用动态SQL,有点鸡肋。






上一篇:魔灵召唤V4.1.8低调使用
下一篇:麒麟文章原创度检测工具v2.0(去除作者联系方式)
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-4-20 21:52

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表