MyBatis的前身是iBATIS,它以接近JDBC的性能优雅地实现Java代码与SQL语句的分离,让开发者将数据操作专注点转移到SQL语句上,进而使代码维护变得更加容易。历经10多年的发展,MyBatis日臻成熟,现已成为Java持久化框架中的佼佼者被广泛应用。
本期专家问答我们请来了《 MyBatis从入门到精通 》一书作者 刘增辉 来为大家解答MyBatis相关问题。
本期问答内容:
1、MyBatis基本用法
2、MyBatis插件开发
3、MyBatis缓存配置
4、MyBatis分页插件
5、通用Mapper
资深Java工程师,热爱技术研究,乐于分享心得,活跃于CSDN和开源中国网站。对MyBatis源码有着深入研究,同时热衷于开源项目,在GitHub和开源中国网站上发布了多个开源项目,是MyBatis官方推荐的分页插件PageHelper和通用Mapper的作者,所发布项目受到了数千人的关注。
CSDN博客地址:http://blog.csdn.net/isea533
为了营造更好的问答氛围,我们不欢迎一切与主题无关的讨论、灌水。欢迎大家踊跃提问,刘增辉老师会为大家解答问题,并在活动结束后奖励提问的每位用户提供100论坛可用分
新书购买:点击
已结束
批量操作会出现duplicate entry for key primary or union index问题,
mysql官方说是bug,解决方法:ignore/replace/insert on duplicate key update,
但这三方法各有缺点,请教下楼主有没有好方法解决批量重复问题,谢~
有些情况只能用官方的解决方法。
但是通常出现主键重复时,是由于实例使用不当造成的。
如果重复使用同一个实例去新增就会导致第一次执行完成后已经有id了,此时再插入时,因为存在ID不会再自动生成,因此会造成重复。
如果使用mysql,批量新增可以考虑 insert (xxx) values(xxx), values(xxx). 书中也有批量新增的详细用法。
我对hibernate的大部分印象还是5年前的,所以我对hibernate的意见仅供参考。
hibernate在小项目或数据量不大的项目中优势很明显,基本CRUD很简单,
但是涉及到复杂注解就比较难,对于复杂查询写起来限制较多,结果映射相对麻烦点。
mybatis适合任意规模的项目,入门很容易,相比hibernate需要更懂SQL,
只要能写出来SQL就能映射成简单或者复杂的对象,SQL容易调优,容易维护。基本CRUD没有hibernate简单,
但是配合MBG或者通用Mapper都可以实现基本方法或者通用方法。
请问单纯从语法角度来看,下面这段java代码有问题吗,为什么编译的时候会出现少分号的提示
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Response implements ActionListener {
public static void main(String args[]) {
JFrame w = new JFrame();
w.setSize(200, 400);
@Override
public void actionPerformed(ActionEvent arg0) {
}
w.setVisible(true);
}
}