MyBatis入门(七)---逆向工程

一、逆向工程

1.1、概述

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

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

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

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

二、导入jar包

2.1、mybatis-generator

47.jpg

三、配置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();
}

}


48.jpg

五、测试

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");
}

}

以上就是MyBatis入门(七)---逆向工程的内容,更多相关内容请关注龙方网络(www.yzlfxy.com)!

郑重声明:本文版权包含图片归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们(delete@yzlfxy.com)修改或删除,多谢。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

留言与评论(共有 0 条评论)
昵称:
匿名发表
   
验证码: