MyBatis逆向工程

1.导入jar包

<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.6</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!--逆向工程的包-->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.7</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.30</version>
</dependency>
<!--junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>

2. 创建generator.xml配置文件

1. 在classpath下,创建generator.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>
<context id="mysqlTable" targetRuntime="MyBatis3">
<commentGenerator>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true" />
</commentGenerator>
<!-- 1.数据连接参数 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/mybatisday01"
userId="root"
password="123456">
<!--是否去除同名表-->
<property name="nullCatalogMeansCurrent" value="true"/>
</jdbcConnection> <!-- 2.默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL
和 NUMERIC 类型解析为java.math.BigDecimal -->
<javaTypeResolver >
<property name="forceBigDecimals" value="false" />
</javaTypeResolver> <!-- 3.生成模型的位置 -->
<!-- javaModelGenerator javaBean生成的配置信息
targetProject:生成PO类的位置
targetPackage:生成PO类的类名-->
<javaModelGenerator targetPackage="com.rqy.domain" targetProject=".\src\main\java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="true" />
<!-- 从数据库返回的值是否清理前后的空格 -->
<property name="trimStrings" value="true" />
</javaModelGenerator> <!-- 4.targetProject:mapper映射文件生成的位置 -->
<!-- sqlMapGenerator Mapper映射文件的配置信息
targetProject:mapper映射文件生成的位置
targetPackage:生成mapper映射文件放在哪个包下-->
<sqlMapGenerator targetPackage="com.rqy.mapper" targetProject=".\src\main\resources">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!-- 5. targetPackage:mapper接口生成的位置 -->
<!--
javaClientGenerator 生成 Model对象(JavaBean)和 mapper XML配置文件 对应的Dao代码
targetProject:mapper接口生成的位置
targetPackage:生成mapper接口放在哪个包下 ANNOTATEDMAPPER
XMLMAPPER
MIXEDMAPPER
-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.rqy.mapper"
targetProject=".\src\main\java">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!-- 指定所有数据库表 --> <!--<table tableName="%"
enableCountByExample="false"
enableUpdateByExample="false"
enableDeleteByExample="false"
enableSelectByExample="false"
enableInsert="false"
enableDeleteByPrimaryKey="true"
enableSelectByPrimaryKey="true"
selectByExampleQueryId="false" ></table>--> <!-- 指定数据库表,要生成哪些表,就写哪些表,要和数据库中对应,不能写错! --> <!-- 6.要生成的表 -->
<table tableName="items"
enableCountByExample="false"
enableUpdateByExample="false"
enableDeleteByExample="false"
enableSelectByExample="false"
enableInsert="true"
enableDeleteByPrimaryKey="true"
enableSelectByPrimaryKey="true"
selectByExampleQueryId="false"
domainObjectName="Items"
/>
<table tableName="orderdetail" domainObjectName="Orderdetail"/>
<table tableName="orders" domainObjectName="Order"/>
<table tableName="user" domainObjectName="User"/>
</context>
</generatorConfiguration>

3.使用java类来执行逆向工程

1. 需要导入mysql的驱动包和mybatis的逆向工程
* 该类放在java资源中就可以
public class Generator {
public static void main(String[] args) throws Exception{
List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
File configFile = new File("config/generator.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);
}
}

4. 执行上面的java类

5. 测试CRUD

1. 测试案例:逆向工程提供了很多查询方法,可以不用写sql,这个根hibernate有点类似
public class MyTest {
SqlSession sqlSession=null;
SqlSessionFactory ssf=null;
@Before
public void before() throws IOException {
ssf = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("SqlMapConfig.xml"));
sqlSession=ssf.openSession();
}
@After
public void after(){
sqlSession.commit();
sqlSession.close();
}
//查询
@Test
public void test(){
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
UserExample userExample = new UserExample(); userExample.createCriteria().andIdBetween(32,35); List<User> users = mapper.selectByExample(userExample);
for (User user : users) {
System.out.println(user);
}
}
//删除
@Test
public void test2(){
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
UserExample userExample = new UserExample(); userExample.createCriteria().andIdEqualTo(41); int i = mapper.deleteByExample(userExample); System.out.println(i);
}
//修改
@Test
public void test3(){
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
UserExample userExample = new UserExample(); userExample.createCriteria().andIdEqualTo(33);//条件
User user=new User();
user.setId(33);
user.setUsername("你好");
user.setSex("2");
user.setAddress("123");
user.setBirthday(new Date());
int i = mapper.updateByExample(user,userExample); System.out.println(i);
}
//插入
@Test
public void test4(){
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user=new User();
user.setId(41);
user.setUsername("你好");
user.setSex("2");
user.setAddress("123");
user.setBirthday(new Date());
int i = mapper.insert(user); System.out.println(i);
}

}

13-MyBatis03(逆向工程)的更多相关文章

  1. UML基础与Rose建模实训教程

    目  录 第1章  初识UML. 1 1.1 初识UML用例图... 1 1.2 初识UML类图... 3 第2章  Rational Rose工具... 6 2.1 安装与配置Rational Ro ...

  2. PowerDesigner逆向工程导入MYSQL数据库总结

    由于日常数据建模经常使用PowerDesigner,使用逆向工程能更加快速的生成模型提高效率,所以总结使用如下: 首先现在PowerDesigner,这里提供PD16.5版本链接: http://pa ...

  3. 我也要学iOS逆向工程--全局变量

    大家好!很久不见了.我之前去音乐学院进修爵士吉他去了.现在回来了.之前我一直在学windows开发和逆向.后来到了音乐学院,老师推荐了1个录音软件叫logic prox.可惜啊!当时我只有个索尼的笔记 ...

  4. Android逆向工程初步(一) 15.4.24

    最近看了看Android的逆向工程,破解的书,像是<Android Hack‘s Book>之类的,感觉挺有意思的,看了看一些smali的语法,试着自己写了个demo玩玩: 1.工具: 最 ...

  5. PowerDesigner 正向工程 和 逆向工程 说明

    PowerDesigner 正向工程 和 逆向工程 说明 database数据库脚本oraclegenerationsql   目录(?)[+]   一. 正向工程与逆向工程说明 在前面几篇里介绍了几 ...

  6. PowerDesigner建模应用(一)逆向工程,配置数据源并导出PDM文件

    物理数据模型(Physical Data Model)PDM,提供了系统初始设计所需要的基础元素,以及相关元素之间的关系:数据库的物理设计阶段必须在此基础上进行详细的后台设计,包括数据库的存储过程.操 ...

  7. powerdesigner逆向工程 oracle

    我们已经有了数据库,希望使用powerdesigner工具生成pdm文件. 本文使用的版本是 15.0 1,  File-->Reverse Engineer-->Database... ...

  8. Java逆向工程SpringBoot + Mybatis Generator + MySQL

    Java逆向工程SpringBoot+ Mybatis Generator + MySQL Meven pop.xml文件添加引用: <dependency> <groupId> ...

  9. SpringBoot+Mybatis+Maven+MySQL逆向工程实现增删改查

    SpringBoot+Mybatis+MySQL+MAVEN逆向工程实现增删改查 这两天简单学习了下SpringBoot,发现这玩意配置起来是真的方便,相比于SpringMVC+Spring的配置简直 ...

  10. mybatis逆向工程,实现join多表查询,避免多表相同字段名的陷阱

    ​ mybatis逆向工程,实现join多表查询,避免多表相同字段名的陷阱 ​ 前言:使用 mybatis generator 生成表格对应的pojo.dao.mapper,以及对应的example的 ...

随机推荐

  1. Go 每日一库之 go-homedir

    简介 今天我们来看一个很小,很实用的库go-homedir.顾名思义,go-homedir用来获取用户的主目录. 实际上,使用标准库os/user我们也可以得到这个信息: package main i ...

  2. 深入理解 CSS(Cascading Style Sheets)中的层叠(Cascading)

    标题中的 Cascading 亦可以理解为级联. 进入正文,这是一个很有意思的现象.可以直接跳到 总结一下 部分,看完再回过头来阅读本文. 引子 假设我们有如下结构: <p class=&quo ...

  3. CSP-S rp++

    心无旁骛 认真思考 努力骗分(哈哈) I Love CSP! 反正像我这种大菜鸟也考不了多少 尽力打 本次考试期望 day1 100 70-100 30-? day2 100 ? ? 总:300-? ...

  4. JVM性能优化系列-(2) 垃圾收集器与内存分配策略

    2. 垃圾收集器与内存分配策略 垃圾收集(Garbage Collection, GC)是JVM实现里非常重要的一环,JVM成熟的内存动态分配与回收技术使Java(当然还有其他运行在JVM上的语言,如 ...

  5. bootstrap4popper.js报错Uncaught ReferenceError

    这是因为bootstrap4需要umd版的popper.js <script src="https://cdn.bootcss.com/popper.js/1.15.0/umd/pop ...

  6. floyd + 最大流 (奶牛分配问题)

    FJ has moved his K (1 <= K <= 30) milking machines out into the cow pastures among the C (1 &l ...

  7. DP- 01背包问题

    这个01背包 , 理解了一天才勉强懂点 , 写个博客  (  推荐   http://blog.csdn.net/insistgogo/article/details/8579597) 题目 : 有N ...

  8. flask路由要点

    1.参数类型intfloatstringpath uuid<any(a, b): an> 枚举, an必须是any中的值2.多个url指向一个视图函数是可行的3.url_for('蓝图名字 ...

  9. 【WPF on .NET Core 3.0】 Stylet演示项目 - 简易图书管理系统(4) - 图书列表界面

    在前三章中我们完成了登录窗口, 并掌握了使用Conductor来切换窗口, 但这些其实都是在为我们的系统打基础. 而本章中我们就要开始开发系统的核心功能, 即图书管理功能了. 通过本章, 我们会接触到 ...

  10. [mvc>actionResult] 封装一个操作方法的结果并用于代表该操作方法执行框架级操作