mybatis的一些小总结

好长时间没用mybatis了,现在项目忽然用mybatis,用的过程中出现了些问题,虽然解决了,不过这花的时间有些长了.总结用的过程中出现的一些问题

1.mapper.xml

之前一直用的自动生成,现在没用工具了,手动复制了别的,结果大意不细心,没了解一些比如resultMap、parameterType等参数导致报了bug:

网上说的太多了,

MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用,但是resultType跟resultMap不能同时存在。
在MyBatis进行查询映射时,其实查询出来的每一个属性都是放在一个对应的Map里面的,其中键是属性名,值则是其对应的值。
①当提供的返回类型属性是resultType时,MyBatis会将Map里面的键值对取出赋给resultType所指定的对象对应的属性。所以其实MyBatis的每一个查询映射的返回类型都是ResultMap,只是当提供的返回类型属性是resultType的时候,MyBatis对自动的给把对应的值赋给resultType所指定对象的属性。
②当提供的返回类型是resultMap时,因为Map不能很好表示领域模型,就需要自己再进一步的把它转化为对应的对象,这常常在复杂查询中很有作用。

2.时间格式问题

查询的过程中碰到个问题,显示时间的时候,前端没有用jstl表达式,后台返回到前端的时间格式数据是dateTime的,想了半天没解决,最后是把bean里面的时间类型改成了String

(中间用了网上常说的方法,json注解、sql语句格式化、mapper的 column 列后面jdbcType格式等),但是这样子 年月日 没问题,时分秒时候 后面会多个.0,就是yyyy-mm-dd hh:mm:ss.0这样的格式,虽然前端可以通过截取字符串解决,但是后台为何不行那?这个问题还是没解决。

时间: 2024-10-13 18:20:40

mybatis的一些小总结的相关文章

mybatis 几个小技巧

1.多个参数传入  dao接口 public interface TrainingUserExtendMapper extends BaseExtMapper { public int updateTrainingUserByMobileNum(@Param("offTrainId")Long offTrainId, @Param("mobileNum")Long mobileNum, @Param("signTime")Date signTim

mybatis 操作存储过程 小细节错误

项目开发的时候遇到一个错误: <span style="font-size:24px;">org.springframework.jdbc.BadSqlGrammarException: ### Error querying database. Cause: java.sql.SQLException: ORA-06550: 第 8 行, 第 4 列: PLS-00103: 出现符号 ";"在需要下列之一时: . ( ) , * @ % & =

关于Mybatis的一点小记录

1.Mybatis的parameterType有两个比较常用的,一个是类的对象,还有一个就是Map,然后取值的方法也很简单: 基本数据类型:#{参数} 获取参数中的值 复杂数据类型:#{属性名} ,map中则是#{key} 2.这里就提一下关于#{}和${},前者是动态解析 时候,就理解成把sql里的这个位置变成 预编译的 ? ,后者就有点像字符串的赋值粘贴,就预编译前的sql语句已经不包含变量了,已经完全是常量了. 然后这里要记录的是,一个和排序有关的 sql语句: 这里我用的是MyBatis

MyBatis框架入门小案例(关于用mybatis框架对数据库的增删改查)

1.新建一个maven项目,建好相对应的包,在https://mvnrepository.com中导入MyBatis需要的依赖,复制到配置文件中 2.在resources文件下添加mybatis-config.xml文件和mapper文件夹,mybatis-config.xml是连接mysql的主要配置,mapper文件夹存放的是对数据库增删改查的映射 mybatis-config.xml配置如下: <?xml version="1.0" encoding="utf-8

mybatis时间查询小技巧

?网上大多数使用mybatis查询的时候都是把时间转换成Date使用的,其实这里时可以直接使用String的,比如 <if test="startTime != null and startTime != '' and endTime != null and endTime != ''"> AND (a.START_TIME >= #{startTime} AND a.START_TIME <= #{endTime} OR a.END_TIME >= #{

mybatis的一些小细节

Mybatis要解决的问题: 1. 将sql语句硬编码到java代码中,如果修改sql语句,需要修改java代码,重新编译.系统可维护性不高. 设想如何解决? 能否将sql单独配置在配置文件中. 2. 数据库连接频繁开启和释放,对数据库的资源是一种浪费. 设想如何解决? 使用数据库连接池管理数据库连接. 3. 向preparedStatement中占位符的位置设置参数时,存在硬编码(占位符的位置,设置的变量值) 设想如何解决? 能否也通过配置的方式,配置设置的参数,自动进行设置参数 4. 解析结

Mybatis中运用小技巧 trim标签的使用

作者:death05的博客推荐:路在脚下trim元素的主要功能是可以在自己包含的内容钱加上某些前缀,也可以在其后加上某写后缀,与之对应的属性是prefix和suffix: 可以把包含内容的首部某些内容覆盖,即忽略,也可以把尾部的某些内容覆盖,对应的属性是prefixOverrides和suffixOverrides.以下举例: 1.代码为: select * from user <trim prefix="WHERE" prefixoverride="AND |OR&q

【Java EE 学习第79天】【mybatis 基本使用方法】【mybatis和spring的整合】

一.简介 mybatis类似于hibernate,都是简化对数据库操作的框架,但是和hibernate不同的是,mybatis更加灵活,整体来说框架更小,这体现在它需要我们手写SQL语句,而hibernate则将对数据库的操作对程序员完全透明了,程序员只需要按照面向对象的思想编写代码即可,想要看sql语句,就必须在配置文件中声明 <property name="show_sql">true</property> hibernate对数据库的操作封装的非常彻底,因

mybatis中树形结构的bean的关系映射

最近用mybatis写一个小程序,涉及到树形结构的关系映射,比如一个分类,本身具有多对一的关系,那么它是如何映射呢?直接贴代码: Cate.java @Table(name="cate") public class Cate extends AbstractModel { /** * */ private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy=GenerationType.IDENTI