一、逆向工程

1.1、概述

mybatis需要程序号自己编写的SQL。

mybatis官方提供了逆向工程,可以针对单表自动生成mybatis执行所需要的代码

(mapper,java,maper.xml,po...)

一般都是由数据库到java代码, 的生成过程

二、导入jar包

2.1、mybatis-generator

三、配置xml

3.1、generatorConfig.xml

<?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>
<!--指定数据库jar包 -->
<classPathEntry location="G:/jar/mysql-connector-java-5.1.37-bin.jar" /> <context id="DB2Tables" targetRuntime="MyBatis3">
<commentGenerator>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true" />
</commentGenerator> <!--JDBC连接配置,driver,url,user,password -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/mybatis?character=utf8"
userId="root" password="root">
</jdbcConnection>
<!--默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL
和 NUMERIC 类型解析为java.math.BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- targetProject:生成PO类的位置 -->
<javaModelGenerator targetPackage="com.mybatis.po"
targetProject=".\src">
<property name="enableSubPackages" value="false" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- targetProject:mapper映射文件生成的位置 -->
<sqlMapGenerator targetPackage="com.pb.mybatis.mapping"
targetProject=".\src">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true" />
</sqlMapGenerator>
<!-- targetPackage:mapper接口生成的位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.pb.mybatis.mapper" targetProject=".\src">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<!--指定要生成的表 -->
<table tableName="author"></table>
<table tableName="blog"></table>
<table tableName="posts"></table> </context> </generatorConfiguration>

四、运行java程序生成

4.1、java程序

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List; import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.exception.XMLParserException;
import org.mybatis.generator.internal.DefaultShellCallback; public class GeneratorSqlmap { public void generator() throws Exception{ List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
//指定 逆向工程配置文件
File configFile = new File("generatorConfig.xml");
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(configFile);
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config,
callback, warnings);
myBatisGenerator.generate(null); }
public static void main(String[] args) throws Exception {
try {
GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap();
generatorSqlmap.generator();
} catch (Exception e) {
e.printStackTrace();
} } }

五、测试

5.1、测试类

package com.pb.ssm.mapper;

import static org.junit.Assert.fail;

import java.util.Date;
import java.util.List; import javax.crypto.Cipher; import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import com.pb.ssm.po.Author;
import com.pb.ssm.po.AuthorExample;
import com.pb.ssm.po.AuthorExample.Criteria; public class AuthorMapperTest {
private ApplicationContext applicationContext;
private AuthorMapper authorMapper; @Before
public void setUp() throws Exception {
applicationContext=new ClassPathXmlApplicationContext("ApplicationContext.xml");
authorMapper=(AuthorMapper) applicationContext.getBean("authorMapper");
} //根据条件查询记录数
@Test
public void testCountByExample() {
AuthorExample example=new AuthorExample();
//可以加条件,不加条件默认查询全部
Criteria criteria=example.createCriteria();
//加条件,介绍不是空的
criteria.andAuthorBioIsNotNull();
int num=authorMapper.countByExample(example);
System.out.println("num="+num);
} //根据条件删除
@Test
public void testDeleteByExample() {
AuthorExample example=new AuthorExample();
//可以加条件,不加条件默认查询全部
Criteria criteria=example.createCriteria();
criteria.andAuthorUsernameEqualTo("程序员");
int num=authorMapper.deleteByExample(example);
System.out.println("num="+num); } //根据主键ID删除
@Test
public void testDeleteByPrimaryKey() {
int num=authorMapper.deleteByPrimaryKey(18);
System.out.println("num="+num);
}
//插入
@Test
public void testInsert() { Author author=new Author();
author.setAuthorUsername("再测试一下");
author.setAuthorPassword("admin123");
author.setAuthorEmail("admin1234@qq.com"); int num=authorMapper.insert(author);
System.out.println("num="+num);
//这个方法插入,默认不会把数据库自增加ID返回,如果需要,可以手动增加
System.out.println("插入后的ID"+author.getAuthorId()); }
//插入
@Test
public void testInsertSelective() {
Author author=new Author();
author.setAuthorUsername("再测试一下");
author.setAuthorPassword("admin123");
author.setAuthorEmail("admin1234@qq.com");
author.setRegisterTime(new Date()); int num=authorMapper.insert(author);
System.out.println("num="+num);
//这个方法插入,默认不会把数据库自增加ID返回,如果需要,可以手动增加
System.out.println("插入后的ID"+author.getAuthorId()); }
//自定义 条件查询
@Test
public void testSelectByExample() {
//声明一个对象
AuthorExample authorExample=new AuthorExample();
//创建criteria对象添加条件 and 连接
Criteria criteria=authorExample.createCriteria();
//需要手动加%
criteria.andAuthorUsernameLike("%张三%"); List<Author> list=authorMapper.selectByExample(authorExample);
System.out.println(list.size());
} //根据主键ID查询
@Test
public void testSelectByPrimaryKey() {
Author author= authorMapper.selectByPrimaryKey(6);
System.out.println(author.getAuthorUsername()+"..."+author.getAuthorBio());
} @Test
public void testUpdateByExampleSelective() {
fail("Not yet implemented");
} @Test
public void testUpdateByExample() {
fail("Not yet implemented");
} @Test
public void testUpdateByPrimaryKeySelective() {
fail("Not yet implemented");
} @Test
public void testUpdateByPrimaryKey() {
fail("Not yet implemented");
} }

最新文章

  1. 大型网站提速关键技术(页面静态化,memcached,MySql优化)(三)
  2. AngularJs的UI组件ui-Bootstrap---tabs控件
  3. web.Config配置数据库的连接
  4. Flex 加载 wmf,svg
  5. Problem 2136 取糖果---FUOJ (线段树+维护)
  6. windows 7 下快速搭建php环境 windows7+IIS7+php
  7. setAttribute一个兼容性问题
  8. Using Boost Libraries in Windows Store and Phone Applications
  9. 为什么开发者热衷在Stack Overflow上查阅API文档?
  10. python学习笔记27(python中sys模块的使用)
  11. PHP unlink() 函数
  12. CSRF 攻击的应对之道
  13. spring NotWritablePropertyException异常
  14. android 一些数据转换方法
  15. 清橙A1202&amp;Bzoj2201:彩色圆环
  16. 一周总结:AutoEncoder、Inception 、模型搭建及下周计划
  17. excel表格获取汉字大写首拼函数(自定义宏)
  18. Docker介绍及使用
  19. python中的Matplot库和Gdal库绘制富士山三维地形图-参考了虾神的喜马拉雅山
  20. 064、Weave网络结构分析(2019-04-04 周四)

热门文章

  1. SpringMVC Controller 返回值的可选类型
  2. 爬虫技术 -- 进阶学习(九)使用HtmlAgilityPack获取页面链接(附c#代码及插件下载)
  3. bootstrap插件学习-bootstrap.popover.js
  4. LoRaWAN协议(三)--Server端数据协议
  5. [转载]SharePoint 2013 解决方案中使用JavaScript
  6. IEE数据库kill指定条件的进程
  7. iOS-UITableView-处理cell上按钮事件(弹出警示框,页面跳转等)
  8. 【iOS】FMDB封装,查询自动mapping
  9. Cocos2dx 3.x包含ext库报错解决
  10. chrome修改UserAgent,调试