MyBatis

mybatis中配置useGeneratedKeys="true" keyProperty="id" 的作用

[亡魂溺海] 提交于 2020-03-06 00:02:22
我们有时候在开发中需要向表中插入自增ID,这个时候领域模型如果想要获取该ID的值,就需要在相应的mapper文件中添加useGeneratedKeys="true" keyProperty="id"。 mapper.xml示例: <insert id="create" parameterType="payment" useGeneratedKeys="true" keyProperty="id"> insert into payment(serial) values (#{serial}) </insert> 控制层代码: @PostMapping("/create") public CommonResult create(Payment payment) { int result = paymentService.create(payment); log.info("插入数据的ID:\t" + payment.getId()); log.info("***插入结果:" + result); if (result > 0) { return new CommonResult(200, "插入数据成功", result); } else { return new CommonResult(444, "插入数据失败", null); } } log信息: 插入数据的ID:4 插入结果

MyBatis入门之二级缓存

心不动则不痛 提交于 2020-03-05 23:55:40
mybatis的二级缓存是namespace级别的,不同于一级缓存,二级缓存是SqlSession共享的,并且默认是不开启的,如果要开启,需要在mybatis的配置文件中的settings节点下,手动设置: <!-- 开启二级缓存,默认是false --> <setting name="cacheEnabled" value="true"></setting> 由于示例代码与之前的博客: MyBatis入门之一级缓存 基本相同,所以不贴重复的代码了,不同之处就是: (1)mybatis-config.xml开启二级缓存 <!-- 开启二级缓存,默认是false --> <setting name="cacheEnabled" value="true"></setting> (2)UserMapper.xml中设置二级缓存的各种属性 <!-- 设置二级缓存 --> <cache eviction="FIFO" flushInterval="60000" size="512" readOnly="true"/> 你也可以直接使用,表示都使用默认值 <cache/> 各个属性的意思(摘自 mybatis官网 ): 这个更高级的配置创建了一个 FIFO 缓存,每隔 60 秒刷新,最多可以存储结果对象或列表的 512 个引用,而且返回的对象被认为是只读的

springboot第十二天

孤者浪人 提交于 2020-03-05 21:47:00
springboot1.0,2014年发布,默认数据库连接池为 Tomcat JDBC Pool springboot2.0,2018年3月1日发布,默认数据库连接池为 Hikari 1.项目创建选择组件:mysql,jdbc web application.yml里: spring: datasource: username: root password: root #使用 MySQL连接驱动是8.0以上,需要在Url后面加上时区, GMT%2B8代表中国时区,不然报时区 错误 url: jdbc:mysql://127.0.0.1:3306/jdbc?serverTimezone=GMT%2B8 # 注意: 新版本驱动包,要使用以下类作为驱动类 driver-class-name: com.mysql.cj.jdbc.Driver @RestController注解=@Controller+@ResponseBody druid <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.12</version> </dependency> mybatis 创建项目 选择mybatis,jdbc,mysql web @MapperScan("com

Mybatis学习笔记(2020-3-5)

谁都会走 提交于 2020-03-05 18:35:36
标题<Mybatis-动态sql学习> 1.SqlSession.commit() 如果在SqlSession执行sql语句之后,没有使用这个回滚的方法,对数据库的增删改测试不会出错,但是数据库之中的数据不会修改 2.元素 用于查询量大时,为了避免重复向数据库发送sql语句 < ! -- < foreach > 元素使用 -- > < select id = "findCustomerByIds" parameterType = "List" resultType = "com.itheima.po.Customer" > select * from t_customer where id in < foreach item = "id" index = "index" collection = "list" open = "(" separator = "," close = ")" > # { id } < / foreach > < / select > item:配置的是当前循环中的元素 index:配置的是当前元素在集合的位置下标 collerction:配置的list是传递过来的参数类型 open和close:配置的是以什么符号将这些元素包装起来 separator:配置的是各个元素之间的间隔符 DEBUG [main] - ==> Preparing: select

Mybatis基础知识学习(一)

陌路散爱 提交于 2020-03-05 18:33:04
本文主要简单的介绍了mybatis以及简单使用,很浅显,相关内容并不深入,也并未深究其原理,着重点在于如何使用,有些地方可能还有一些小问题,请多多包涵,谢谢~ 一、Mybatis简介 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。 iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs) Mybatis Mybatis是一个 持久层 框架,支持定制化SQL、存储过程以及高级映射。借助Mybatis可以简化开发过程中有关持久层的工作量,进而提高编码效率。 通俗地说,借助Mybatis可以简化有关数据库操作的代码,Mybatis本质上就是实现一些功能代码的集合,在使用它时所减轻的工作量实际是由Mybatis自动完成的。 二、使用Mybatis的准备工作 (1)新建项目 使用IDEA新建一个 maven 项目。(可以简单地把maven理解为是一个包的管理工具,实际上其功能远不止这个,有关maven的使用,这里不进行介绍,可参考网上大佬的博客) 项目建立后

Spring Boot整合mybatis

两盒软妹~` 提交于 2020-03-05 12:47:45
mybatis与Spring Boot的整合 有两种方式: 1、使用mybatis官方提供的Spring Boot整合包。 2、使用Spring和mybatis的整合方式 如何选择? 根据项目需要,来进行选择。 例如:如果是简单的CRUD,明显使用第一种方式。如果比较复杂,且涉及到多个表的,建议使用第二种方式,这样可以很方便的控制Mybatis的各种配置。 一、使用mybatis官方提供的Spring Boot整合包。 这里使用的是maven,所以首先导入相关的依赖。 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.0.0</version> </dependency> 在application.properties配置mysql的连接配置 spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior

mybatis (mysql)根据日期(相等)查不出来数据

五迷三道 提交于 2020-03-05 11:12:09
背景,写这篇博客的时候还是挺开心的,因为把困扰我的问题解决了(上班时间,搞了几个小时),中间有人提醒了下,没有领会呵呵 1.情况说明 根据时间: Parameters: 2020-03-04 00:00:00.0 (Timestamp) Preparing: select id, task_created_time ,thread_id from table_name a WHERE a.task_created_time = ? ORDER BY create_time DESC 数据库里:确实有 2020-03-04 00:00:00 这个日期的记录,但就是查不出来, 怀疑:1.mybatis 日期转换多了一个 .0 , 其实是没有问题的。后来通过查询返回的数据,发现返回的时间与数据时间相差14个小时,后经过查找资料, 发现是因为数据库的时间区域与本地时间区域与不同导致的问题!!!! 解决方法: 如何修改数据库的时间区域,发现有三种方式:https://blog.csdn.net/qq_30264689/article/details/94742358 取代的方法:就是把参数Date类型字段,新增一个相同意思的String 类型字段,但是这样就多出来一个字段,感觉爽,但可以解决问题 来源: oschina 链接: https://my.oschina.net

Mybatis - 自定义BaseMapper LanguageDriver(注解方式)

我的梦境 提交于 2020-03-05 07:11:47
在使用mybatis的注解的形式的时候我们都希望能封装一些基础的方法。本篇内容就是基于此,本篇内容的源码 源码 如果可以,欢迎点个star BaseMapper如下: /** * 基础base * @param <T> * @param <K> */ public interface BaseMapper<T, K> { /** * 插入 * @param model * @return */ @Lang(BaseMapperDriver.class) @Insert({"<script>", "INSERT INTO ${table} ${values}", "</script>"}) @Options(useGeneratedKeys = true, keyColumn = "id", keyProperty = "id") Long insert(T model); /** * 修改 * @param model * @return */ @Lang(BaseMapperDriver.class) @Update({"<script>", "UPDATE ${table} ${sets} WHERE ${id}=#{id}", "</script>"}) Long updateById(T model); /** * 删除 * @param id * @return */

Mybatis注解模糊查询

爷,独闯天下 提交于 2020-03-05 07:02:57
第一种是需要在调用方式时将参数拼接字符串 @Select ( "SELECT * FROM tb_user WHERE username LIKE #{username}" ) List < UserInfo > findByUsername ( String username ) ; 此时我们调用该方法进行查询时需要将username拼接为"%"+username+"%" findByUsername("%"+username+"%")j 第二种中是占位符, v a l u e , {value} , v a l u e , 符号,属性必须是value,取参数的值 @Select ( "SELECT * FROM tb_user WHERE username LIKE '%${value}%' " ) List < UserInfo > findByUsername ( String username ) ; 调用方式时直接传入参数即可 findByUsername(username) 来源: CSDN 作者: LuLuke_lucky 链接: https://blog.csdn.net/LuLuke_lucky/article/details/104609585

SpringBoot-06-web(整合mybatis)

一世执手 提交于 2020-03-05 01:23:23
  第一步:环境搭建   我们新建一个项目,注意比之前不使用数据库多导入了关于sql的两个依赖,分别是, JDBC API 、 MySQL Driver 和 Mybatis Framework   第二步:配置数据库连接信息   application.properties: spring . datasource . url = jdbc : mysql : / / localhost : 3306 / mybatis ? serverTimezone = UTC & useUnicode = true & characterEncoding = utf - 8 spring . datasource . username = root spring . datasource . password = 123456 spring . datasource . driver - class - name = com . mysql . cj . jdbc . Driver   第三步:实体类 @Data @NoArgsConstructor @AllArgsConstructor public class User { private Integer id ; private String name ; private Integer age ; private double