接着上一篇文章通过Mybatis完成了一个User的CRUD的功能之后,这篇开始还需要建立一个Blog类,这样就可以模拟一个简单的微博平台的数据库了。

数据库准备

首先我们,还是需要在数据库中新建一个表blog

 CREATE TABLE `blog`.`blog` (
`b_id` INT NOT NULL,
`b_title` VARCHAR(45) NULL,
`b_content` VARCHAR(255) NULL,
`user_id` INT NULL,
PRIMARY KEY (`b_id`),
INDEX `fk_blog_user_idx` (`user_id` ASC),
CONSTRAINT `fk_blog_user`
FOREIGN KEY (`user_id`)
REFERENCES `blog`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

接下来,Oh~不,难道又要写一堆的xml和方法才能折腾完CRUD吗?这当然是我这种懒人不喜欢干的。还好mybatis提供了一个代码生成器mybatis generator工具。

可以去github的mybatis generator主页上下载这个工具

https://github.com/mybatis/generator/releases

我使用的是生成器版本是1.3.2

配置文件

接着只需要一个配置generator文件我们就能让上一篇里写个半死的东西全部自动生成出来了。

 <?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>
<!-- 配置mysql 驱动jar包路径.用了绝对路径 -->
<classPathEntry location="/home/whthomas/software/javaframework/mysql-connector-java-5.1.30/mysql-connector-java-5.1.30-bin.jar" />
<context id="mysql_tables" targetRuntime="MyBatis3">
<!--<plugin type="pro.plugin.PaginationPlugin" />
为了防止生成的代码中有很多注释,比较难看,加入下面的配置控制 -->
<commentGenerator>
<property name="suppressAllComments" value="true" />
<property name="suppressDate" value="true" />
</commentGenerator>
<!-- 注释控制完毕 --> <!-- 数据库连接 -->
<jdbcConnection driverClass="org.gjt.mm.mysql.Driver"
connectionURL="jdbc:mysql://127.0.0.1:3306/blog"
userId="mybatis"
password="mybatis">
</jdbcConnection>
<javaTypeResolver >
<property name="forceBigDecimals" value="false" />
</javaTypeResolver> <!-- 数据表对应的model 层 -->
<javaModelGenerator targetPackage="pro.app.model" targetProject="../src">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator> <!-- sql mapper 映射配置文件 -->
<sqlMapGenerator targetPackage="pro.app.mapper" targetProject="../src">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator> <!-- 在ibatis2 中是dao层,但在mybatis3中,其实就是mapper接口 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="pro.app.inter" targetProject="../src">
<property name="enableSubPackages" value="true" />
</javaClientGenerator> <!-- 要对那些数据表进行生成操作,必须要有一个. -->
<table schema="blog" tableName="blog"
enableCountByExample="false" enableUpdateByExample="false"
enableDeleteByExample="false" enableSelectByExample="false"
selectByExampleQueryId="false">
<generatedKey column="b_id" sqlStatement="MySql" identity="true"/>
</table> </context>
</generatorConfiguration>

mybatis generator可以生成三种类型的文件:vo类、Dao接口层和Mapper.xml文件,通过这个配置文件告诉generator你需要生成哪一些需要的文件。

在命令行界面输入

java -jar mybatis-generator-core-1.3..jar -configfile generatorConfig.xml -overwrite

这里的 -jar 和 -configfile 后面都是可以跟随相对路径的。输入这条命令之后,包括vo类、dao接口和mapper.xml文件全部都生成好了。整个人都好起来了。

新建一个BlogTest类,来测试一下生成的代码好不好用!

 package pro.test;

 import java.io.Reader;

 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 pro.app.inter.BlogMapper;
import pro.app.model.Blog; public class BlogTest {
private static SqlSessionFactory sqlSessionFactory;
private static Reader reader;
static{
try{
reader= Resources.getResourceAsReader("Configuration.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
}catch(Exception e){
e.printStackTrace();
}
}
public static SqlSessionFactory getSession(){
return sqlSessionFactory;
}
public static void main(String[] args) {
SqlSession session = sqlSessionFactory.openSession();
try {
BlogMapper blogDAO = session.getMapper(BlogMapper.class);
//生成一个Blog实例
Blog blog=new Blog();
blog.setbTitle("Mybatis");
blog.setbContent("Mybatis is good! ");
blog.setUserId(1);
//新增一条Blog记录到数据库
blogDAO.insert(blog);
//从数据库选取刚刚的那一条Blog
Blog record=blogDAO.selectByPrimaryKey(1);
System.out.println(record.getbTitle());
System.out.println(record.getbContent());
//修改数据并保存
blog.setbTitle("mybatis update");
blogDAO.updateByPrimaryKey(blog);
//删除数据
blogDAO.deleteByPrimaryKey(1);
} finally {
session.close();
}
}
}

控制台输出:

Mybatis
Mybatis is good!

ok,没有报错。CRUD全部都搞定!省去了不少时间,设想如果有很多表使用这个工具可以节约多少的时间哇~当然复杂的sql语句还是要自己完成的。

总结

使用mybatis generator完成基本的CRUD配置。

Hello Mybatis 02 mybatis generator的更多相关文章

  1. springboot集成mybatis及mybatis generator工具使用

    原文链接 前言mybatis是一个半自动化的orm框架,所谓半自动化就是mybaitis只支持数据库查出的数据映射到pojo类上,而实体到数据库的映射需要自己编写sql语句实现,相较于hibernat ...

  2. springboot入门(三)-- springboot集成mybatis及mybatis generator工具使用

    前言 mybatis是一个半自动化的orm框架,所谓半自动化就是mybaitis只支持数据库查出的数据映射到pojo类上,而实体到数据库的映射需要自己编写sql语句实现,相较于hibernate这种完 ...

  3. spring boot集成mybatis(3) - mybatis generator 配置

    Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...

  4. 03 Mybatis:01.Mybatis课程介绍及环境搭建&amp;&amp;02.Mybatis入门案例

    mybatis框架共四天第一天:mybatis入门 mybatis的概述 mybatis的环境搭建 mybatis入门案例 -------------------------------------- ...

  5. 【mybatis】mybaits generator 逆向工程的使用

    mybatis逆向工程官方网站:http://www.mybatis.org/generator/quickstart.html 准备xml文件.如下generator.xml全部内容 <?xm ...

  6. spring boot 尚桂谷学习笔记10 数据访问02 mybatis

    数据访问 mybatis 创建一个 springboot 工程,模块选择 sql 中 mysql(数据驱动), jdbc(自动配置数据源), mybatis Web模块中选择 web pom 引入: ...

  7. 【Mybatis】MyBatis之动态SQL(六)

    MyBatis 的强大特性之一便是它的动态 SQL,本章介绍动态 SQL 查看本章,请先阅读[Mybatis]MyBatis对表执行CRUD操作(三). 本例表结构 CREATE TABLE `emp ...

  8. 【Mybatis】MyBatis之Sql配置文件的使用(四)

    上一章[Mybatis]MyBatis对表执行CRUD操作(三),已经讲了基本操作,本章介绍Sql配置文件中常用功能 1.插入返回主键 2.参数值的获取方式 3.resultMap使用 插入返回主键 ...

  9. MyBatis笔记----MyBatis 入门经典的两个例子: XML 定义与注解定义

    ----致敬MyBatis官方开放文档让大家翻译,不用看书直接看文档就行了,mybatis的中文文档还需要完备的地方 简介 什么是 MyBatis ? MyBatis 是支持定制化 SQL.存储过程以 ...

随机推荐

  1. iOS开发的设计模式

    ios开发学习中,经常弄不清楚ios的开发模式,今天我们就来进行简单的总结和探讨~ (一)代理模式 应用场景:当一个类的某些功能需要由别的类来实现,但是又不确定具体会是哪个类实现. 优势:解耦合 敏捷 ...

  2. WordPress &#39;is_serialized()&#39;远程任意代码执行漏洞(CVE-2013-4338)

    漏洞版本: WordPress 3.6 漏洞描述: Bugtraq ID:62345 CVE ID:CVE-2013-4338 WordPress是一种使用PHP语言开发的博客平台,用户可以在支持PH ...

  3. JavaScript--DOM增删改操作

    JavaScript使用DOM操作节点来进行增删改操作 <!DOCTYPE html> <html> <head> <meta charset="U ...

  4. Linux-文件管理

    文件管理 创建.复制.删除.移动.查看.编辑.压缩.查找 Linux目录结构 Windows: 以多根的方式组织文件 C:\ D:\ E:\Linux: 以单根的方式组织文件 / /目录结构: FSH ...

  5. 两小时入门Docker

    引入 Docker是什么? Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,于 2013 年 3 月以 Apache 2.0 授权协议 ...

  6. laravel StartSession中间件的实现原理

    1. 打开app\Http\Kernel.php,找到StartSession的位置.这里要说一下,middleware中的中间件是都会被执行的,但执行的顺序我不知道,还需看源码来实现 protect ...

  7. String小案例(**)、包装类型和普通数据类型的转换(拆装箱)

    ###String用法: package StringTest; /**功能: * 判断Java文件名是否正确,判断邮箱格式是否正确 * 其中:合法的文件名应该以.java结尾 * 合法的邮箱名至少包 ...

  8. Java线程池详解,看这篇就够了!

    构造一个线程池为什么需要几个参数?如果避免线程池出现OOM?Runnable和Callable的区别是什么?本文将对这些问题一一解答,同时还将给出使用线程池的常见场景和代码片段. 基础知识 Execu ...

  9. HDU 3591 (完全背包+二进制优化的多重背包)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3591 The trouble of Xiaoqian Time Limit: 2000/1000 M ...

  10. DWZ 框架详解

    这是一个智障的框架,能别用就别用.