用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. Java模式(适配器型号)

    今天阅读Java该适配器模式,这里有一个小的总结和下谈感受.对于将来使用. 首先.让我们有关适配器先说说. 适应是“来源”至“目标”适应.其中连接这两个的关系是适配器.它负责“源”过度到“目标”. 举 ...

  2. 座IO理解力

    一般堵塞IO服务器通信,通常有一个单独的Acceptor线程负责监控client联系,它接收client对于每个请求连接后client分配用于处理一个新的线程,处理后.返回应答给client.线程才销 ...

  3. ZOJ3827 ACM-ICPC 2014 亚洲区域赛的比赛现场牡丹江I称号 Information Entropy 水的问题

    Information Entropy Time Limit: 2 Seconds      Memory Limit: 131072 KB      Special Judge Informatio ...

  4. some notions about os

    1. Multiprogramming system provide an environment in which the various resources (like CPU,memory,an ...

  5. UML 简单的总结

    上某一个地方,总有个记忆挥不散,每一个深夜某一个地方,总有着最深的思量- 都说岁月无情人有情,记忆easy催人老,可有时候反倒觉着人比岁月更无情.岁月留下了我们成长的印记,但是有时候以前认为会相伴永远 ...

  6. WINDOWS7,8和os x yosemite 10.10.1懒人版双系统安装教程

    安装过程 磁盘划分 懒人版如果不是整盘单系统或者双硬盘双系统安装我们需要在当前系统磁盘划分两块磁盘空间,一个用来做安装盘,一个作为系统盘. 我这里是单硬盘,想从最后一个盘符压缩出80GB的空来安装黑苹 ...

  7. Java,JSP,JavaScript三和差异

    JSP代表:java server page,意义是基于JAVA服务器的网络技术,随着asp,php喜欢,我们正在创造的语言网页 JavaScript:它已成为JS,随着JAVA系,就是赶时髦起个这名 ...

  8. js中推断对象详细类型

    大家可能知道js中推断对象类型能够用typeof来推断. 看以下的情况 <script> alert(typeof 1);//number alert(typeof "2&quo ...

  9. UVA 239 - Tempus et mobilius. Time and motion(更换周期)

    UVA 239 - Tempus et mobilius. Time and motion 题目链接 题意:这题题意也是吊得飞起,看了老半天,大概是这样: 有一个放球的队列.和3个轨道(说白了就是栈) ...

  10. Ajax请求访问action推断文件是否存在

    action措辞: public ActionForward fileIsExsit(ActionMapping mapping, ActionForm form, HttpServletReques ...