用mybatis原因很简单,易用,性能。是介于jdbc和hibernate之间的一个完美方案。

很简单:

1:配置pom

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test.database</groupId>
<artifactId>dao-core</artifactId>
<version>0.0.1-SNAPSHOT</version> <dependencies> <dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.1.1</version>
</dependency> <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.30</version>
</dependency> <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<type>jar</type>
<scope>test</scope>
</dependency> </dependencies> <build>
<plugins>
<!-- mybits dao层 自动生成代码 插件 -->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
</plugin>
</plugins>
</build>
</project>

2: src/main/resources 下新建 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>
<!--classPathEntry:数据库的JDBC驱动 -->
<classPathEntry
location="D:\soft_源程序\DB\mysql\mysql-connector-java-5.1.19-bin.jar" /> <context id="MysqlTables" targetRuntime="MyBatis3"> <!-- 注意这里面的顺序确定的,不能随变更改 -->
<!-- 自定义的分页插件 <plugin type="com.deppon.foss.module.helloworld.shared.PaginationPlugin"/> --> <!-- 可选的(0 or 1) -->
<!-- 注释生成器 -->
<commentGenerator>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true" />
</commentGenerator> <!-- 必须的(1 required) -->
<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/data?useUnicode=true&amp;characterEncoding=UTF-8"
userId="root" password="123654">
</jdbcConnection> <!-- 可选的(0 or 1) -->
<!-- 类型转换器或者加类型解析器 -->
<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer true,把JDBC DECIMAL 和
NUMERIC 类型解析为java.math.BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver> <!-- 必须的(1 required) -->
<!-- java模型生成器 -->
<!-- targetProject:自动生成代码的位置 -->
<javaModelGenerator targetPackage="com.test.model"
targetProject="F:\Workspaces\workspace_eclipse\dao-core\src\main\java">
<!-- TODO enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="true" />
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true" />
</javaModelGenerator> <!-- 必须的(1 required) -->
<!-- map xml 生成器 -->
<sqlMapGenerator targetPackage="com.test.persistence"
targetProject="F:\Workspaces\workspace_eclipse\dao-core\src\main\resources">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator> <!-- 可选的(0 or 1) -->
<!-- mapper 或者就是dao接口生成器 -->
<javaClientGenerator targetPackage="com.test.dao"
targetProject="F:\Workspaces\workspace_eclipse\dao-core\src\main\java"
type="XMLMAPPER">
<property name="enableSubPackages" value="true" />
</javaClientGenerator> <!-- 必须的(1...N) -->
<!-- pojo 实体生成器 -->
<!-- tableName:用于自动生成代码的数据库表;domainObjectName:对应于数据库表的javaBean类名 -->
<!-- schema即为数据库名 可不写 -->
<table schema="data" tableName="tab_city" domainObjectName="CityModel"
enableInsert="true">
<!-- 忽略字段 可选的(0 or 1) -->
<!-- <ignoreColumn column="is_use" /> -->
<!--//无论字段是什么类型,生成的类属性都是varchar。 可选的(0 or 1) 测试无效 -->
<!-- <columnOverride column="city_code" jdbcType="VARCHAR" /> -->
</table> </context>
</generatorConfiguration>
 

3: 点击pom,run as maven bulid  :  mybatis-generator:generate     红色字最好自己手敲或者copy.

构建完后:

4:项目中使用的话,需要建立 mybatis-config.xml 在 src/main/resources 下

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/data" />
<property name="username" value="root" />
<property name="password" value="123654" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/test/persistence/CityModelMapper.xml" />
</mappers>
<!-- <typeAliases> <typeAlias type="com.hoo.entity.Account" alias="account"/>
</typeAliases> -->
</configuration>

5: 建立测试

5.1 java传统测试

TestDao.java

package com.test.dao;

import java.io.IOException;
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 com.test.model.CityModel; public class TestDao {
public static void main(String[] args) {
SqlSession session = null;
String resource = "mybatis-config.xml";
Reader reader = null;
try {
reader = Resources.getResourceAsReader(resource);
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder()
.build(reader);
session = sessionFactory.openSession(); CityModelMapper cityModelMapper = session
.getMapper(CityModelMapper.class); // CityModel cityModel = new CityModel();
// cityModel.setId(7);
// cityModel.setCityName("test7");
// cityModel.setCityCode(2);
// cityModelMapper.insert(cityModel);
// session.commit();
// System.out.println("插入一个city name" + cityModel.getCityName());
CityModel cityModel = cityModelMapper.selectByPrimaryKey(4);
session.commit();
System.out.println(cityModel.getCityName());
cityModel.setCityName("testchange");
;
cityModelMapper.updateByPrimaryKey(cityModel);
session.commit();
System.out.println("update"); } catch (IOException e) {
e.printStackTrace();
} finally {
if (null != session)
session.close();
}
}
}

5.2 单元测试:

CityModelMapperTest.java

package com.test.dao;

import static org.junit.Assert.fail;

import java.io.Reader;
import java.util.List; import junit.framework.Assert; 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 org.junit.After;
import org.junit.Before;
import org.junit.Test; import com.test.model.CityModel;
import com.test.model.CityModelExample; public class CityModelMapperTest {
SqlSession session = null;
CityModelMapper cityModelMapper = null; @Before
public void setUp() throws Exception {
String resource = "mybatis-config.xml";
Reader reader = null;
reader = Resources.getResourceAsReader(resource);
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder()
.build(reader);
session = sessionFactory.openSession();
cityModelMapper = session.getMapper(CityModelMapper.class);
} @Test
public void testCountByExample() {
fail("Not yet implemented");
} @Test
public void testDeleteByExample() {
fail("Not yet implemented");
} @Test
public void testDeleteByPrimaryKey() { int flag = cityModelMapper.deleteByPrimaryKey(10);
session.commit();
System.out.println("返回值:" + flag);
System.out.println("删除一个city id " + 10);
Assert.assertTrue(flag > 0);
} @Test
public void testInsert() {
CityModel cityModel = new CityModel();
int i = 10;
cityModel.setId(i);
cityModel.setCityName("test" + i);
cityModel.setCityCode(i);
cityModelMapper.insert(cityModel);
session.commit();
System.out.println("插入一个city name" + cityModel.getCityName());
} @Test
public void testInsertSelective() {
fail("Not yet implemented");
} @Test
public void testSelectByExample() {
CityModelExample example = new CityModelExample();
example.setDistinct(false);
example.setOrderByClause("id");
example.createCriteria().andIdBetween(1, 3);
List<CityModel> cityList = cityModelMapper.selectByExample(example);
for (CityModel cityModel : cityList) {
System.out.println("id:" + cityModel.getId() + "\n" + "name:"
+ cityModel.getCityName() + "\n");
}
fail("Not yet implemented");
} @Test
public void testSelectByPrimaryKey() {
CityModel cityModel = cityModelMapper.selectByPrimaryKey(8);
System.out.println("查询到一个city" + cityModel.getCityName());
Assert.assertTrue(null != cityModel);
} @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() {
CityModel cityModel = new CityModel();
int i = 8;
cityModel.setId(i);
cityModel.setCityName("updaet" + i);
cityModel.setCityCode(i);
int flag = cityModelMapper.updateByPrimaryKey(cityModel);
session.commit();
System.out.println("返回值:" + flag);
System.out.println("update一个city id " + i);
Assert.assertTrue(flag > 0);
} @After
public void tearDown() throws Exception {
} }

6: 用到的sql

DROP TABLE IF EXISTS `tab_city`;
CREATE TABLE `tab_city` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`city_name` varchar(255) DEFAULT NULL COMMENT '城市名称',
`city_code` int(11) NOT NULL COMMENT '用三位数字表示 例如 001 代表朝阳',
`is_use` int(11) DEFAULT NULL COMMENT '是否有效',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COMMENT='城市代码表';

完。

java_model_dao_自动生成_generator-mybatis-generator-1.3.2 基于maven插件的更多相关文章

  1. (二)一个很好用的自动生成工具——mybatis generator

    mybatis generator-自动生成代码 准备材料: 一个文件夹,一个数据库的驱动包,mybatis-generator-core-1.3.5.jar,一条生成语句 如图:(我用的是derby ...

  2. 【mybatis源码学习】利用maven插件自动生成mybatis代码

    [一]在要生成代码的项目模块的pom.xml文件中添加maven插件 <!--mybatis代码生成器--> <plugin> <groupId>org.mybat ...

  3. MyBatis Generator自动生成的配置及使用

    注意:文件名不能有中文字符,不然不能自动生成 找到MyBatis Generator.rar\MyBatis Generator\eclipse里的features和plugins文件,把这两个文件复 ...

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

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

  5. 【转】Intellij IDEA 14中使用MyBatis-generator 自动生成MyBatis代码

    Intellij IDEA 14 作为Java IDE 神器,接触后发现,非常好用,对它爱不释手,打算离开eclipse和myeclipse,投入Intellij IDEA的怀抱. 然而在使用的过程中 ...

  6. Spring Boot (七)MyBatis代码自动生成和辅助插件

    一.简介 1.1 MyBatis Generator介绍 MyBatis Generator 是MyBatis 官方出品的一款,用来自动生成MyBatis的 mapper.dao.entity 的框架 ...

  7. eclipse中mybatis自动生成插件使用

    对于使用Mybatis的开发者来说, 使用mybatis generator来生成mapper 以及配置文件, 可以大大简化工作, mybatis generator有多种工作方式, eclipse插 ...

  8. mybatis generator为实体类生成自定义注释(读取数据库字段的注释添加到实体类,不修改源码)

    我们都知道mybatis generator自动生成的注释没什么实际作用,而且还增加了代码量.如果能将注释从数据库中捞取到,不仅能很大程度上增加代码的可读性,而且减少了后期手动加注释的工作量. 1.首 ...

  9. 通过eclipse mybatis generater代码生成插件自动生成代码

    Mybatis属于半自动ORM,在使用这个框架中,工作量最大的就是书写Mapping的映射文件,由于手动书写很容易出错,我们可以利用Mybatis-Generator来帮我们自动生成文件.通过在Ecl ...

随机推荐

  1. 全新E:网站不是之前排名浮动 相比于竞争对手究竟缺少了什么?

    这几天有非常多朋友问新辰,为什么站点排名掉了?为什么被人家逆袭反超了?当然,这无疑与你站点的内容.外链和用户体验有非常大关系,只是.新辰在此觉得,还须要多研究一下竞争对手的站点,做到:人无我有.人有我 ...

  2. Velocity脚本新手教程

    从网络下的数据汇编 一.Velocity简介 Velocity它是Apache该公司的开源产品,它是一套基于Java语言模板引擎,背景可以非常灵活的数据与模板文件一起反对.他直言不讳地说:,人使用模板 ...

  3. 关于WCF的引用,添加服务和添加web服务的区别

    原文:关于WCF的引用,添加服务和添加web服务的区别 本章内容主要是根据我做的实验来阐述这2种添加服务针对WCF的不同之处,我们按照示例一步一步来看. 如下是工程的结构: 该WCF服务是通过控制台程 ...

  4. gdb经常使用的命令

    在调试程序的时候,gdb是一柄利器,恰当的使用gdb能够解决掉程序的很多bug. gdb并不检查语法错误.那是gcc或者g++的事情,gdb干的是调试的事情. 说明: (1)gdb 程序名 [core ...

  5. openstack临时存储后端

    声明: 本博客欢迎转发.但请保留原作者信息! 博客地址:http://blog.csdn.net/halcyonbaby 内容系本人学习.研究和总结,如有雷同,实属荣幸! 眼下openstack提供了 ...

  6. Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable (转)

    最近需要做些接口服务,服务协议定为JSON,为了整合在Spring中,一开始确实费了很大的劲,经朋友提醒才发现,SpringMVC已经强悍到如此地步,佩服! 相关参考: Spring 注解学习手札(一 ...

  7. 【C++基金会 06】explictkeyword

    C++提供keywordexplicit,你应该不能阻止的转换构造隐式转换发生的同意.声明explicit的构造不能在一个隐式转换使用. 1.演示样例 我们先来看一段演示样例代码: class A { ...

  8. POJ 2418 Hardwood Species(STL在map应用)

    职务地址:id=2418">POJ 2418 通过这个题查了大量资料..知道了非常多曾经不知道的东西. . .. 在代码中凝视说明吧. 代码例如以下: #include <ios ...

  9. Java TCP/UDP网络通信编程

    本文转自:http://www.cnblogs.com/cdtarena/archive/2013/04/10/3012282.html 网络应用中基本上都是TCP(Transmission Cont ...

  10. poj 1699 Best Sequence(AC自己主动机+如压力DP)

    id=1699" target="_blank" style="">题目链接:poj 1699 Best Sequence 题目大意:给定N个D ...