{"id":778,"date":"2020-03-09T15:38:04","date_gmt":"2020-03-09T07:38:04","guid":{"rendered":"http:\/\/prayerlaputa.com\/?p=778"},"modified":"2020-03-09T15:38:04","modified_gmt":"2020-03-09T07:38:04","slug":"mybatis-plus%e9%85%8d%e7%bd%ae%e5%a4%9a%e6%95%b0%e6%8d%ae%e6%ba%90%e6%97%b6%e6%89%b9%e9%87%8f%e6%8e%a5%e5%8f%a3%e8%b0%83%e7%94%a8%e5%a4%b1%e8%b4%a5%e4%bb%a5%e5%8f%8a%e8%a7%a3%e5%86%b3%e6%96%b9","status":"publish","type":"post","link":"http:\/\/prayerlaputa.com\/?p=778","title":{"rendered":"mybatis plus\u914d\u7f6e\u591a\u6570\u636e\u6e90\u65f6\u6279\u91cf\u63a5\u53e3\u8c03\u7528\u5931\u8d25\u4ee5\u53ca\u89e3\u51b3\u65b9\u6848"},"content":{"rendered":"<h1 id=\"%E8%A1%A8%E7%8E%B0\" class=\"mume-header\">\u8868\u73b0<\/h1>\n<p>\u4ec5\u914d\u7f6e\u5355\u4e2a\u6570\u636e\u6e90\u65f6\uff0cmybatis plus\u7684save\/saveBatch\u63a5\u53e3\u8c03\u7528\u6b63\u5e38<br \/>\n\u914d\u7f6e\u591a\u4e2a\u6570\u636e\u6e90\u3001\u52a8\u6001\u5207\u6362\u65f6\uff0cmybatis plus\u7684save\u63a5\u53e3\u8c03\u7528\u6b63\u5e38\uff0csaveBatch\u8c03\u7528\u5931\u8d25\uff0c\u62a5\u9519\u5982\u4e0b<\/p>\n<pre class=\"language-\" data-role=\"codeBlock\" data-info=\"\"><code>org.apache.ibatis.exceptions.PersistenceException: \r\n### Error flushing statements.  Cause: org.apache.ibatis.executor.BatchExecutorException: com.xxx.survey.mapper.SurveyAnswerMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: \u5bf9\u8c61\u540d 't_survey_answer' \u65e0\u6548\u3002\r\n### Cause: org.apache.ibatis.executor.BatchExecutorException: com.xxx.survey.mapper.SurveyAnswerMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: \u5bf9\u8c61\u540d 't_survey_answer' \u65e0\u6548\u3002\r\n at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)\r\n at org.apache.ibatis.session.defaults.DefaultSqlSession.flushStatements(DefaultSqlSession.java:255)\r\n at com.baomidou.mybatisplus.extension.service.impl.ServiceImpl.saveBatch(ServiceImpl.java:128)\r\n at com.baomidou.mybatisplus.extension.service.IService.saveBatch(IService.java:58)\r\n at com.baomidou.mybatisplus.extension.service.IService$$FastClassBySpringCGLIB$$f8525d18.invoke(&lt;generated&gt;)\r\n at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)\r\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:736)\r\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)\r\n at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)\r\n at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:282)\r\n at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)\r\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:671)\r\n at com.xxx.survey.service.impl.SurveyAnswerServiceImpl$$EnhancerBySpringCGLIB$$dbeefaf3.saveBatch(&lt;generated&gt;)\r\n at com.xxx.survey.ServiceTest.testGetAttendanceRecord(ServiceTest.java:91)\r\n at sun.refl\r\n<\/code><\/pre>\n<p><!--more--><\/p>\n<h1 id=\"%E5%8E%9F%E5%9B%A0\" class=\"mume-header\">\u539f\u56e0<\/h1>\n<p>\u914d\u7f6e\u52a8\u6001\u6570\u636e\u6e90\u4e4b\u540e\uff0c\u6211\u5728\u914d\u7f6e\u5bf9\u8c61\u4e2dmapper xml\u6587\u4ef6\u5939\u914d\u7f6e\u6ca1\u6709\u533a\u5206\u5f00\uff0c\u4e0d\u540c\u6570\u636e\u6e90\u7684mapper\u90fd\u653e\u5230\u4e86\u540c\u4e00\u4e2a\u6587\u4ef6\u5939\u4e2d\uff0c\u5373\u4e0d\u540c\u7684<\/p>\n<pre class=\"language-\" data-role=\"codeBlock\" data-info=\"\"><code>        \/\/ \u8bbe\u7f6emapper.xml\u6587\u4ef6\u7684\u8def\u5f84\r\n        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();\r\n        \/\/\u52a8\u6001\u6570\u636e\u6e90\u7684\u60c5\u51b5\u4e0b\uff0c\u9700\u8981\u5206\u522b\u5236\u5b9amapper xml\u6587\u4ef6\u7684\u4fdd\u5b58\u4f4d\u7f6e\uff0c\u5426\u5219\u4f1a\u5f15\u8d77mybatis plus\u6279\u91cf\u63a5\u53e3\u5931\u8d25\uff08\u6bd4\u5982save\u6210\u529f\u3001\u4f46saveBatch\u5931\u8d25\uff09\r\n        Resource[] resource = resolver.getResources(\"classpath:mapper\/*.xml\");\r\n        mybatisPlus.setMapperLocations(resource);\r\n<\/code><\/pre>\n<p>\u6211\u8fd9\u91cc\u4e4b\u524d\u90fd\u4e24\u4e2a\u6570\u636e\u6e90mapper\u914d\u7f6e\u7684\u662f<code>classpath:mapper\/*.xml<\/code><\/p>\n<h1 id=\"%E8%A7%A3%E5%86%B3\" class=\"mume-header\">\u89e3\u51b3<\/h1>\n<p>\u4e0d\u540c\u6570\u636e\u5e93\u7684xml\u653e\u5230\u4e0d\u540c\u6587\u4ef6\u5939\u4e0b\u5373\u53ef\uff1a<br \/>\n\u6570\u636e\u6e901<\/p>\n<pre class=\"language-\" data-role=\"codeBlock\" data-info=\"\"><code>        \/\/ \u8bbe\u7f6emapper.xml\u6587\u4ef6\u7684\u8def\u5f84\r\n        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();\r\n        \/\/\u52a8\u6001\u6570\u636e\u6e90\u7684\u60c5\u51b5\u4e0b\uff0c\u9700\u8981\u5206\u522b\u5236\u5b9amapper xml\u6587\u4ef6\u7684\u4fdd\u5b58\u4f4d\u7f6e\uff0c\u5426\u5219\u4f1a\u5f15\u8d77mybatis plus\u6279\u91cf\u63a5\u53e3\u5931\u8d25\uff08\u6bd4\u5982save\u6210\u529f\u3001\u4f46saveBatch\u5931\u8d25\uff09\r\n        Resource[] resource = resolver.getResources(\"classpath:mapper\/folder1\/*.xml\");\r\n        mybatisPlus.setMapperLocations(resource);\r\n<\/code><\/pre>\n<p>\u6570\u636e\u6e902<\/p>\n<pre class=\"language-\" data-role=\"codeBlock\" data-info=\"\"><code>        \/\/ \u8bbe\u7f6emapper.xml\u6587\u4ef6\u7684\u8def\u5f84\r\n        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();\r\n        \/\/\u52a8\u6001\u6570\u636e\u6e90\u7684\u60c5\u51b5\u4e0b\uff0c\u9700\u8981\u5206\u522b\u5236\u5b9amapper xml\u6587\u4ef6\u7684\u4fdd\u5b58\u4f4d\u7f6e\uff0c\u5426\u5219\u4f1a\u5f15\u8d77mybatis plus\u6279\u91cf\u63a5\u53e3\u5931\u8d25\uff08\u6bd4\u5982save\u6210\u529f\u3001\u4f46saveBatch\u5931\u8d25\uff09\r\n        Resource[] resource = resolver.getResources(\"classpath:mapper\/folder2\/*.xml\");\r\n        mybatisPlus.setMapperLocations(resource);\r\n<\/code><\/pre>\n<p>\u5373\u53ef\u89e3\u51b3\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u8868\u73b0 \u4ec5\u914d\u7f6e\u5355\u4e2a\u6570\u636e\u6e90\u65f6\uff0cmybatis plus\u7684save\/saveBatch\u63a5\u53e3\u8c03\u7528\u6b63\u5e38 \u914d\u7f6e\u591a\u4e2a\u6570\u636e\u6e90\u3001 <a href='http:\/\/prayerlaputa.com\/?p=778' class='excerpt-more'>[&#8230;]<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[86,75],"tags":[88,76],"_links":{"self":[{"href":"http:\/\/prayerlaputa.com\/index.php?rest_route=\/wp\/v2\/posts\/778"}],"collection":[{"href":"http:\/\/prayerlaputa.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/prayerlaputa.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/prayerlaputa.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/prayerlaputa.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=778"}],"version-history":[{"count":1,"href":"http:\/\/prayerlaputa.com\/index.php?rest_route=\/wp\/v2\/posts\/778\/revisions"}],"predecessor-version":[{"id":779,"href":"http:\/\/prayerlaputa.com\/index.php?rest_route=\/wp\/v2\/posts\/778\/revisions\/779"}],"wp:attachment":[{"href":"http:\/\/prayerlaputa.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=778"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/prayerlaputa.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=778"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/prayerlaputa.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=778"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}