Mybatis 教程之Mybatis注解开发
mybatis初配置信息是基于 XML ,映射语句(SQL)也是定义在 XML 中的。而到了 MyBatis 3提供了新的基于注解的配置。
mybatis开启驼峰命名 mybatis开启驼峰映射
这里讲述 注解开发方式:
首先我们需要获取 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() . 但是ja 中使用的 clusterName ,可以通过 Result 注解控制.
@ResultMap 可以通过Id,应用其他的 Results
还有一种更改映射的方式:
mapUnderscoreToCamelCase 设置为true, 之后会自动实现 mysql 中的unix命名方式转为ja的驼峰表示法。
@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 ('tianshozhi');
mybatis-plus配置返回map自动转换为驼峰
map-underscore-to-camel-case: true
这个yml设置只会把VO之类的自动驼峰化
但是有些没有VO的 只是一两个字段的 直接返回map给前端的
就在配置文件
下加入
重启 返回的map数据也转为驼峰了。
SpringBoot整合ORM开发框架MyBatis和JPA
1、在使用Spring整合ORM组件的过程中,为了达到简化的目的,往往会进行大量的配置。利用SpringBoot可以进一步实现配置的简化。SpringBoot整合MyBatis开发框架,MyBatis是一款常用并且配置极为简单的ORM开发框架。其与Spring结合后,可以利用Spring的特征实现DAO接口的自动配置。在SpringBoot中,又对MyBatis框架的整合进行了进一步简化。
修改pom.xml配置文件,在项目中引入mybatis-spring-boot- starter依赖支持库,切记也需要数据库链接池的支持的哦。
数据表结构,如下所示:
注意:如果数据表字段两个英文单词之间是下划线连接的,但是你的实体类是驼峰命名法,此时就需要进行配置,数据库字段是你下划线分隔,但是bean中的字段是驼峰命名的,如user_name和userName,导致无法匹配。如果是通过xml文件来配置的话,只需要开启驼峰命名转换,setting name="mapUnderscoreToCamelCase" value="true"/>,在/src/main/resources/mybatis/mybatis.cfg.xml里面配置即可。
创建一个po实体类,方便数据传输,如下所示:
在src/main/resources目录中创建mybatis/mybatis.cfg.xml配置文件。如果要开启驼峰命名转换,在这里开启即可,如下所示:
如果在application.properties中开启转换的话,使用mybatis.configuration.map-underscore-to-camel-case=true配置即可。
或者搞个配置类,如果数据库表字段Column无法自动映射到相对应的实体类属性上,我们可以在config包下新建一个自动配置类MybatisConfig,开始驼峰命名规则。
MyBatis配置文件开启驼峰命名映射
修改application.yml配置文件,追加MyBatis配置,如下所示:
搞几个Dao层、Service层、Controller层的接口或者类,如下所示:
注意:如果不想每次都在mapper接口上添加@Mapper注解,可以在主启动类上通过添加@MapperScan注解来批量扫描指定包下的所有mapper接口。
Service层的接口和实现类代码,如下所示:
控制层的代码,如下所示:
项目启动类,如下所示:
通过Postman测试一下,自己写的接口,看看好使不,如下所示:
项目结构,如下所示:
2、JPA是推出的Ja持久层作标准(现主要使用Hibernate实现),使用SpringData技术和JpaRepository接口技术,也可以达到简化数据层的目的。要在SpringBoot中使用SpringDataJPA,需要spring-boot-starter-data-jpa依赖库的支持。
修改pom.xml配置文件,引入相关依赖包,如下所示:
创建UserInfo实体类,如下所示:
创建UserDao,然后继承JpaRepository ,此时就可以使用写好的方法了,不用自己再额外写接口和实现,如下所示:
然后定义Service接口和Service接口实现,如下所示:
然后搞一个Controller,作为接口访问的入口,如下所示:
修改程序启动主类,追加Repository扫描配置。如果使用JpaRepository实现了DAO接口的自动实现。需要注意的是,如果想启用Repository配置,则需要在程序启动主类时使用@EnableJpaRepositories注解配置扫描包,而后才可以正常使用。
修改application.properties,使用Druid作为数据源连接池,如下所示:
使用postman进行接口调用,如下所示:
主要的是给自己增加知识的储备,有备无患。给大家分享Spring系列的学习笔记和面试题,包含spring面试题、spring cloud面试题、spring boot面试题、spring教程笔记、spring boot教程笔记、阿里巴巴开发手册(63页PDF总结)、2022年Ja面试手册。一共整理了1184页PDF文档。私信博主(666)领取,祝大家更上一层楼!!!
怎么用ja实现驼峰命名法与数据库命名法的相互转换
驼峰命名就是除首单词外后面单词个字符大写,根据数据库命名法规则,获取到一个名字时先判断是表名还是什么,然后根据对应的规则剪切拼接字符就可以了。
如果用mybatis可以直接转换的。
mybatis-generator 生成代码字段名默认按驼峰命名,可否设置
如何让idea自动创建mybatis配置文件
一、在pom.xml中添加plugin
其中generatorConfig.xml的位置,大家根据实际情况自行调整
二、generatorConfig.xml配置文件
1
2
3 PUBLIC "-// MyBatis Generator Configuration 1.0//EN"
4 "
5
6 7 location="C:/Oracle/Middleware/wlserver_10.3/server/lib/ojdbc6.jar"/> 8 9 10 11 12 13 14 connectionURL="jdbc:oracle:thin:@172.20.16.:1521:CARGO" userId="" 15 password=""/> 16 17 targetProject="D:/yangjm/Code/CTAS/JAVAEE/CTAS2CCSP/src/main/ja"> 18 19 20 21 22 targetProject="D:/yangjm/Code/CTAS/JAVAEE/CTAS2CCSP/src/main/ja"> 23 24 25 26 targetProject="D:/yangjm/Code/CTAS/JAVAEE/CTAS2CCSP/src/main/ja" type="XMLMAPPER"> 27 28 29 33 34 enableCountByExample="false" enableUpdateByExample="false" 35 enableDeleteByExample="false" enableSelectByExample="false" 36 selectByExampleQueryId="false"> 37 39 40 41 根据具体问题类型,进行步骤拆解/原因原理分析/内容拓展等。 我一般都用自定义的resultMap 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 12345678@qq.com 举报,一经查实,本站将立刻删除。mybatis中带下划线变量的映射问题