搜狗站长平台,邢台建设局网站上中标公示查询,专业营销的网站建设公司排名,修改wordpress版权连接常规SSM框架开发中#xff0c;mybatis遇到的坑是最多的#xff0c;把以下几点坑记录下来防止以后再遇到同样的情况。1、mybatis 若果在mapper中返回值没有配置resultMap而是使用resultType直接返回的话#xff0c;那么当心默认配置中的驼峰匹配规则#xff0c;参考以下配置…常规SSM框架开发中mybatis遇到的坑是最多的把以下几点坑记录下来防止以后再遇到同样的情况。1、mybatis 若果在mapper中返回值没有配置resultMap而是使用resultType直接返回的话那么当心默认配置中的驼峰匹配规则参考以下配置文件。该情况适用于bean属性字段和数据库完全一致且字段名带有下划线如user_menu这样的字段时?xml version1.0 encodingUTF-8 ?
!DOCTYPE configuration PUBLIC -//mybatis.org//DTD Config 3.0//EN http://mybatis.org/dtd/mybatis-3-config.dtd
configurationsettingssetting namecallSettersOnNulls valuetrue/setting namecacheEnabled valuetrue/setting namelazyLoadingEnabled valuetrue/setting nameaggressiveLazyLoading valuetrue/setting namemultipleResultSetsEnabled valuetrue/setting nameuseColumnLabel valuefalse/setting nameuseGeneratedKeys valuefalse/setting nameautoMappingBehavior valuePARTIAL/setting namedefaultExecutorType valueSIMPLE/!-- 禁用掉驼峰规则,不然实体类带下划线的都匹配不上 --setting namemapUnderscoreToCamelCase valuefalse/setting namelocalCacheScope valueSESSION/setting namejdbcTypeForNull valueNULL/setting nameautoMappingUnknownColumnBehavior valueFAILING/!--自定义日志类--setting namelogImpl valuemain.com.log.MyBatisLogImpl / /settingstypeAliasestypeAlias aliasInteger typejava.lang.Integer/typeAlias aliasLong typejava.lang.Long/typeAlias aliasString typejava.lang.String/typeAlias aliasHashMap typejava.util.HashMap/typeAlias aliasLinkedHashMap typejava.util.LinkedHashMap/typeAlias aliasArrayList typejava.util.ArrayList/typeAlias aliasLinkedList typejava.util.LinkedList/!-- 自定义实体类 --/typeAliases
/configuration2、mybatis想要打印sql如果按照常规配置是无法打印的如果这样配置sql可以打印但是无法进入文件。setting namelogImpl valueSTDOUT_LOGGING / 或者setting namelogImpl valueSLF4J / 但是有时候会失效因为本人使用logback做日志管理因此也无法用log4j来实现sql的打印。这时候就需要重写log打印功能Component
mybatis 配置setting namelogImpl valuexx.xx.MyBatisLogImpl / 3、有的时候mybatis需要调用oracle存储过程而这个存储过程的参数还是一个自定义的oracle类型。private 这里要注意1、oracle的自定义类型和自定义列表必须是全局的不能是pkg里面的否则不识别。 2、本人没有找到使用Mybatis的自定义typeHandler来进行参数拼接方案尤其是跨用户执行存储过程的时 候使用typeHandler往往是匹配不上的他会莫名其妙把你JDBC的用户名给带上去所以我暂定的方案是直接拿连接池里面的连接直接操作数据库。4、JDBC连接池拿到的连接有的时候需要转成oracle的connection或者mysql的connection,如果你直接close转换之后的连接实例是没用的因为数据连接池的连接并没有关闭掉而且调用连接池连接的关闭方法也不是真的关闭而是放回至连接池中所以如果要做转换记得分两步拿到连接池连接实例操作完之后记得close掉。5、这个相对大头一些有的时候通常是连oracle这种数据库我们要导出大量数据到excel如果数据量比较大比如大概3、4 十万行每行100多列的这种情况。如果用常规的导出办法也就是查到list中再传入poi进行处理是会报堆溢出的很明显list里面放那么多数据根本就放不下。那解决办法就是边查边导这时候需要重写ResultHandler按照自定义返回值处理的方式进行处理。个人解决方案是在service方法中写一个方法域内的全局list,逐条插入数据当list.size()达到500的时候将里面的数据用poi导到文档清空list。往复循环直到数据全部被插入到excel为止。这里poi有几个特定的配置强调一下1、final SXSSFWorkbook sbook new SXSSFWorkbook(100);workboox实例要用SXSSFWorkbook初始化常规的最大行数就到Integer.MAX_VALUE 65535了超过就溢出。构造方法参数是内存缓存100条超过就写入临时文件了如果列超级多的话建议设置小点儿但是不能不设置不设置就是不限制了。2、sbook.setCompressTempFiles(true); //要开启写入临时文件这个功能。以上就是Mybatis遇到的几个比较大的坑小来小去的错误就不在这写了当然也可能有一些更大的坑被遗漏掉了以后再慢慢捡吧。其实mybatis的本质就是一个常规JDBC的封装添加了很多易用性的功能它既是一个框架也可以算作一种规范了不过不要被它限制死了要学会使用它而不是被它使用。