欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  Java

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

程序员文章站 2022-04-08 17:33:17
...

一、逆向工程

1.1、概述

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

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

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

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

二、导入jar包

2.1、mybatis-generator

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

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

}


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

五、测试

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入门(七)---逆向工程的内容,更多相关内容请关注PHP中文网(www.php.cn)!

相关标签: MyBatis,逆向工程