mybatis3 基础构建
这一次讨论的问题是如何使用mybatis进行一个小项目的dao层的构建,让我们拭目以待吧!
准备工作
准备好相关的jar包当然是很重要的,在你的maven项目的pom.xml中添加如下配置信息即可:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.1.1</version>
</dependency>
具体步骤
1:mybatis配置文件
<!--文件名: mybatis.xml-->
<?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">
<!--文件名: mybatis.xml-->
<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/mybatis" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<!--配置映射文件-->
<mappers>
<mapper resource="com/weimob/mapping/autoTestMapping.xml"/>
</mappers>
</configuration>
2:实体类的建立
在这个时候需要我们建立自己的pojo类,pojo类的建立没有什么要说的地方,符合java的一些规范就好。
3:和dao映射文件的建立
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.weimob.autotest.dao.AutoTestMapping.getInputString">
<!-- 根据trakc_id查询得到一个autoTest对象 -->
<select id="getUrl" parameterType="String"
resultType="com.weimob.autotest.modle.AutoTest">
SELECT method_name AS methodName,service_key As
serviceKey,method_key As methodKey FROM
goods_adaptor_config WHERE
method_name=#{methodname}
</select>
</mapper>
这里的话着重强调namespace,这个属性的话是后面我们利用sqlsession进行数据库操作的重要参数。
4:读入mybatis配置文件,得到和数据库的会话,执行相关操作。
String resourcesString = "mybatis.xml";
// 使用类加载器加载mybatis的配置文件
InputStream iStream=AutoTestDaoImpl.class.getClassLoader().getResourceAsStream(resourcesString);
// 构建sqlSession的工厂
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(iStream);
// 得到同数据库的会话
sqlSession = sqlSessionFactory.openSession();
上面的话我们可以看到,读取mybatis的配置文件的时候,我们直接采取的是相对路径,系统会直接去classpath下寻找,因此一定要放在classpath下。
之后得到了sqlSessionFactory这个工厂,我们需要得到的数据库会话就是由其分配的。得到数据库会话之后接下来要做的事情就是:执行sql了。
@Override
public AutoTest getInputString(String trackid) {
// 映射sql的标识字符串,和namespace是一致的
String statement = "com.weimob.autotest.dao.AutoTestMapping.getInputString";
// 执行查询,查询一个List也是可以的
AutoTest autoTest = sqlSession.selectOne(statement, trackid);
if (autoTest == null) {
logger.debug("查询条件无效,最终统计条件未获取。返回空对象。");
return new AutoTest();
}
logger.debug(autoTest.toString());
return autoTest;
}
总结
上面我们对mybatis的基本配置进行了详细的讲解,基本按照这个教程,我们就可以按图索骥按照mybatis的规范来管理我们的dao层。可是,在web开发中,一般来说框架之间都会相互整合。而mybatis作为如此优秀的一款orm数据层映射框架,也必然有着不少的整合。
那么,我想后面,我们需要探究其同spring的整合,想想前面一篇博文中的话,spring统一了java的世界,觉得这样做的必要性尤其明显了。