文章目录
一、多表查询
SELECT * FROM (
SELECT p.productionPlanId,p.skuid,p.allNum FROM daa p GROUP BY p.productionPlanId,p.skuid
) a left JOIN (
SELECT a.id,a.productionNo FROM abc s
) b ON a.productionPlanId = b.id

二、循环插入语句
<insert id="insertRight" parameterType="*"
useGeneratedKeys="true" keyColumn="id">
INSERT INTO aa(id,num)
values
<foreach collection="list" item="item" separator=","
open="" close="">
(#{item.id},#{item.num})
</foreach>
</insert>
controller
// 按逗号分割数组
String[] str = strees.split(",");
List<Map<String, Object>> listMap = new ArrayList<Map<String, Object>>();
for (int i = 0; i < str.length; i++) {
Map<String, Object> map = new HashMap<String, Object>();
String operationId = str[i];
map.put("num", num);
listMap.add(map);
map.put("id", id);
}
三、String为空的问题
当string为空时,转换成integer,mybatis会自动加0。


改成
<select id="search" resultType="*">
select * from pro_delivery WHERE 1=1
<if test="id2!='' and id2!=null">AND id LIKE '%' #{id2} '%'</if>
<if test="names!='' and names!=null">AND names LIKE '%' #{names} '%'</if>
</select>
model里添加

五、sql命名问题
- sql里不能在表中有下划线的命名,例如(Pro_xx),在mybatis查询会出错,传回空值,解决方法:


六、保存长文本出错

解决方法一:
这个问题是因为StringBuffer导致,最后将StringBuffer字符转换为String即可。
七、Duplicate entry ‘17’ for key 1

原来因为数据库本身就存在这个ID,所以用insert会报错,应该用update
八、Field ‘id’ doesn’t have a default value

因为数据库中的ID没有设置为自增长
九、Address already in use: connect

临时解决办法:关闭浏览器。永久解决办法(没啥用)

十、tomcat报错——PermCon space

解决办法:修改eclipse的Run Configurations。点击“Run”-“Run Configurations”,在打开的窗口中点击“Arguments”选项卡。


在VM arguments中内容最下边输入:
-Xms256m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m


本文深入探讨MyBatis的高级使用技巧,包括多表查询、循环插入语句、字符串处理及运行时常见错误的解决方案。涵盖SQL命名规范、长文本保存问题、数据库错误处理等,为开发者提供实用的指导。
&spm=1001.2101.3001.5002&articleId=82694194&d=1&t=3&u=4e031e4f0b434310a3c883877f1cc788)
1212

被折叠的 条评论
为什么被折叠?



