资深Java工程师带你解读MyBatis第二十七期
2017年07月10日--2017年07月17日 分享到:

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论坛可用分

这里写图片描述

新书购买:点击

已结束
本期嘉宾 1499669376 532081 刘增辉 资深Java工程师,热爱技术研究,乐于分享心得,活跃于CSDN和开源中国网站。对MyBatis源码有着深入研究,同时热衷于开源项目,在GitHub和开源中国网站上发布了多个开源项目,是MyBatis官方推荐的分页插件PageHelper和通用Mapper的作者,所发布项目受到了数千人的关注。
2 ix fly ix_fly 2017.07.15 10:22提问
批量新增重复问题,凑齐标题长度

批量操作会出现duplicate entry for key primary or union index问题,
mysql官方说是bug,解决方法:ignore/replace/insert on duplicate key update,
但这三方法各有缺点,请教下楼主有没有好方法解决批量重复问题,谢~

2 isea533 isea533 2017.07.17 08:55回答

有些情况只能用官方的解决方法。

但是通常出现主键重复时,是由于实例使用不当造成的。

如果重复使用同一个实例去新增就会导致第一次执行完成后已经有id了,此时再插入时,因为存在ID不会再自动生成,因此会造成重复。

如果使用mysql,批量新增可以考虑 insert (xxx) values(xxx), values(xxx). 书中也有批量新增的详细用法。

2 m2200 m2200 2017.07.14 13:03提问
在hibernate和mybatis之间如何选择

希望您谈谈在hibernate和mybatis之间如何选择,以及各自的优缺点和最佳业务场景。

2 isea533 isea533 2017.07.17 08:50回答

我对hibernate的大部分印象还是5年前的,所以我对hibernate的意见仅供参考。
hibernate在小项目或数据量不大的项目中优势很明显,基本CRUD很简单,
但是涉及到复杂注解就比较难,对于复杂查询写起来限制较多,结果映射相对麻烦点。

mybatis适合任意规模的项目,入门很容易,相比hibernate需要更懂SQL,
只要能写出来SQL就能映射成简单或者复杂的对象,SQL容易调优,容易维护。基本CRUD没有hibernate简单,
但是配合MBG或者通用Mapper都可以实现基本方法或者通用方法。

cynh28
cynh28 回复cynh28: 阿斯顿发阿斯顿发
9 天之前 回复
cynh28
cynh28 我这里的阿斯顿发了
9 天之前 回复
cynh28
cynh28 asdf asdf
9 天之前 回复
cynh28
cynh28 zheshi sm
9 天之前 回复
2 poumen1183 poumen1183 2017.07.13 16:50提问
java 实现actionListener的方法时,总是提示少分号

请问单纯从语法角度来看,下面这段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);
}

}

图片说明

2 isea533 isea533 2017.07.14 09:04回答

和本主题不符。。。

你大括号层次都是错的,是用记事本写的吗?IDE肯定直接标出来了。

共9条数据 1 3 尾页