最近复现个问题,需要用到MyBatis,了解到可以MyBatis Generator插件自动生成MyBatis的相关代码,确实非常方便。
mybatis-generator就是mybatis代码生成器,在eclipse的配置方式有两种:离线和在线。
1. 在线安装
首先我们需要知道下载地址,最新地址可从Mybatis官网获取,复制链接,
https://marketplace.eclipse.org/content/mybatis-generator
eclipse的"Help-Install NewSoftware",选择"Add",配置该地址,
但是这种在线安装有个问题,就是好像只能下载最新的版本,目前是1.4.0,没太深入研究,用这个生成的MyBatis代码好像都改成接口形式,不再用xml配置了,用起来太生疏。如果要使用旧的,就得用离线安装。
2. 离线安装
GitHub的官网地址,https://github.com/mybatis/generator/releases,可以找到历史版本的链接,例如1.3.7,点击进来,下载第二个zip链接,
解压出来的features和plugins,将其中的包和文件夹,拷到eclipse的features和plugins,重启eclipse,即可完成安装。
然后就可以创建代码了,先创建测试表,
CREATE TABLE userinfo ( id int(11) NOT NULL AUTO_INCREMENT, username varchar(45) DEFAULT NULL, password varchar(45) DEFAULT NULL, age int(11) DEFAULT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
然后,创建一个新工程,src下写个generatorConfig.xml配置文件,
内容如下,可以看到,其实就主要包括了几个部分,
(1) jdbcConnection配置的连接串,读取数据库表,反向生成映射。
(2) javaModelGenerator配置的Java代码路径。
(3) sqlMapGenerator配置的xml文件路径。
(4) javaClientGenerator配置的Java Client代码路径。
(5) table配置的需要映射的数据库schema和表名。
右键单击generatorConfig.xml,"Run As"执行Run MyBatis Generator,
如果执行成功,显示这些信息,
MyBatis Generator Started... Buildfile: D:DevEclipseworkspaces.metadata.pluginsorg.mybatis.generator.eclipse.ui.generatedAntscriptsMyBatis-generatorConfig.xml.xml BUILD SUCCESSFUL MyBatis Generator Finished
红框内的代码,都是自动生成的,
写个配置文件,mybatis-config.xml,如下所示,
写个测试类,执行插入操作,
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import bean.Userinfo;
public class Test {
public static void main(String[] args) {
try {
Userinfo userinfo=new Userinfo();
userinfo.setUsername("usernamevalue");
userinfo.setPassword("passwordValue");
//读取mybatis-config.xml配置
String resource="mybatis-config.xml";
InputStream inputStream=Resources.getResourceAsStream(resource);
//生成SqlSessionFactory
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
//生成SqlSession
SqlSession sqlSession=sqlSessionFactory.openSession();
//执行插入操作
sqlSession.insert("insert",userinfo);
//提交事务
sqlSession.commit();
//关闭会话
sqlSession.close();
} catch (IOException e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
数据写入表了,
从操作来讲,还是比较方便的,只需要设置反向映射的路径、数据库配置,就可以生成MyBatis所需的基础代码,再写个config连接数据库的配置文件以及测试类,就可以实现MyBatis操作数据库了。
但是,调试过程,还是比较坎坷的,碰到了很多坑,在这提下。
问题1,执行Run MyBatis Generator的时候,提示如下错误,
看着是JDBC驱动问题,但是包都引入了,要快速解决,可以右键generatorConfig.xml,选择"Run Configuration",
Classpath的"User Entries",将jdbc的jar引进来,就可以执行了,
问题2,执行Run MyBatis Generator的时候,还可能提示如下这个错误,
如果连的MySQL,就会碰到这问题,解决方案是需要在jdbc连接串中增加serverTimezone参数,如下所示,
jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=GMT%2B8
这其中可能有包括两个知识点,
(1) 之所以使用到了GMT%2B8,因为北京时,是东八区,如果写成UTC,就相差了8个小时。
(2) jdbc中如果含多个参数应该用"&"隔开,但是写在xml中,"&"就是特殊字符了,需要改成"&",否则不识别。
问题3,创建生成的MyBatis代码可能出现这些引用包的错误,
此时可以到maven大本营仓库,https://mvnrepository.com/,检索包名,
找到和当前的MyBatis版本兼容的jar,下载引入,
可能很多朋友,有相同的感觉,调这种问题,就想升级打怪,解决一个,可能又出来另外一个,或者解决另外一个的时候,发现之前解决的不太对,过程可能很崩溃,但是换个角度,这些都是成长的积累,碰到的问题越多,积累就会越丰富,所以不用怕碰到问题,但是一定得有自己的思考,形成知识库,成为自己的财富,否则只是机械地解决问题,下次碰到了,还是不懂。
近期更新的文章:
《缓存一致性解决方案介绍》
《从球衣了解“红魔”曼联历史》
《MySQL中SQL执行慢的一种可能的原因场景》
《什么是Oracle索引扫描的批量回表操作?》
《降噪耳机的原理》
文章分类和索引:
《公众号900篇文章分类和索引》



