用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&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插件

