MyBatis Generator的使用和坑
最近复现个问题,需要用到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和表名。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration><context id="context1"><jdbcConnection connectionURL="jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=GMT%2B8" driverClass="com.mysql.cj.jdbc.Driver" password="root" userId="root" /><javaModelGenerator targetPackage="bean" targetProject="MyBatis" /><sqlMapGenerator targetPackage="mapping" targetProject="MyBatis" /><javaClientGenerator targetPackage="mapping" targetProject="MyBatis" type="XMLMAPPER" /><table schema="test" tableName="userinfo"><columnOverride column="id" property="id" /></table></context>
</generatorConfiguration>
右键单击generatorConfig.xml,"Run As"执行Run MyBatis Generator,
如果执行成功,显示这些信息,
MyBatis Generator Started...Buildfile: D:\Dev\Eclipse\workspaces\.metadata\.plugins\org.mybatis.generator.eclipse.ui\.generatedAntScripts\MyBatis-generatorConfig.xml.xmlBUILD SUCCESSFUL
MyBatis Generator Finished
红框内的代码,都是自动生成的,
写个配置文件,mybatis-config.xml,如下所示,
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><environments default="development"><environment id="development"><!--事务管理配置--><transactionManager type="JDBC"/><!--数据源配置--><dataSource type="POOLED"><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=GMT%2B8"/><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment></environments><mappers><!--这里的resource对应上一步自动生成的mapping/UserinfoMapper.xml文件--><mapper resource="mapping/UserinfoMapper.xml"/></mappers>
</configuration>
写个测试类,执行插入操作,
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);//生成SqlSessionFactorySqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);//生成SqlSessionSqlSession sqlSession=sqlSessionFactory.openSession();//执行插入操作sqlSession.insert("insert",userinfo);//提交事务sqlSession.commit();//关闭会话sqlSession.close();} catch (IOException e) {// TODO: handle exceptione.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篇文章分类和索引》
MyBatis Generator的使用和坑相关推荐
- MyBatis Generator分页插件RowBoundsPlugin坑
一.Mybatis Generator设置分页 Mybatis Generator没有设置分页,但自带了个RowBoundsPlugin分页插件,故而配置 <plugin type=" ...
- 用mybatis的generator自动生成代码--坑我都走了一遍,后面的同学别踩了
先说什么是mybatis-generator? mybatis-geneator是一款mybatis自动代码生成工具,可以通过配置,快速生成mapper和xml文件. 步骤一:在pom文件中添加插件配 ...
- Mybatis generator 1.4.x 入门教程--转载
Mybatis generator 1.4.x 入门教程 一.前言 最近因为公司开了新的项目,所以在构建骨架的时候发现mybatis最新的版本已经更新到了1.4.0了,尝试了一下,比起之前的myb ...
- Springboot—mysql+mybatis+generator插件
1.idea-generatorConfig.xml <?xml version="1.0" encoding="UTF-8"?> <!DOC ...
- 取代 Mybatis Generator,这款代码生成神器配置更简单,开发效率更高
作为一名 Java 后端开发,日常工作中免不了要生成数据库表对应的持久化对象 PO,操作数据库的接口 DAO,以及 CRUD 的 XML,也就是 mapper. Mybatis Generator 是 ...
- MyBatis学习总结(9)——使用MyBatis Generator自动创建代码
2019独角兽企业重金招聘Python工程师标准>>> 由于MyBatis属于一种半自动的ORM框架,所以主要的工作就是配置Mapping映射文件,但是由于手写映射文件很容易出错,所 ...
- SpringBoot如何自动生成实体类和Dao层以及映射文件(mybatis generator 自动生成代码)
一.首先添加自动生成代码插件 <!-- mybatis generator 自动生成代码插件 生成时解除注释 --><plugin><groupId>org.myb ...
- idea mybatis generator插件_在idea中使用mybatis generator逆向工程生成代码
用maven工具生成mybatis的代码和映射文件. 1.配置pom.xml文件 在pom.xml下添加插件如下: <build> <finalName>zsxt</fi ...
- Spring Boot项目利用MyBatis Generator进行数据层代码自动生成
概 述 MyBatis Generator (简称 MBG) 是一个用于 MyBatis和 iBATIS的代码生成器.它可以为 MyBatis的所有版本以及 2.2.0之后的 iBATIS版本自动生成 ...
最新文章
- 文件fluent_胡言4种Fluent二次开发姿势
- HDU1011 Starship Troopers(树形dp)
- 真实的linux系统是怎样的,只使用Linux系统是怎样一种体验?_科技数码通
- 洛谷 2777 [AHOI2016初中组]自行车比赛
- .NET开发人员犯的6大安全错误
- win7美化_Potplayer64位美化版,无棒子的tv推送
- 关于开源中国手机App的说明
- 【算法分析与设计】鸡尾酒排序
- MySQL工作笔记-建表时为Float型数据确定精度,查询时精度显示,多列之和查询
- 302状态码_HTTP状态码status code详解
- 视频点播服务器实现视频转码和视频播出功能
- tensorboard特征图可视化
- 论文页眉奇偶页不同怎么设置_什么!论文排版这么简单的吗?!
- unidac连接ORACLE免装客户端驱动
- 11G新特性 -- ASM Fast Mirror Resync
- 一文带你了解微信/支付宝支付的相关概念
- Mybatis-学习笔记(7)缓存机制
- paip.函数方法回调机制跟java php python c++的实现
- 浏览器辅助神器:油猴脚本使用教程
- 什么叫运营---一个人,一张网,一艘船,独钓寒江雪!