首先之前尝试直接搭建maven+spring+springMVC+mybatis,太急于求成,看的视频也乱,就开始搭,各种出问题,框架中大部分代码是不可见的,这样更加需要透彻的理解。现在打算一步步慢慢来,每一步打扎实了。
mybatis重新开始!
①先熟悉jar包
</tbody>
jar包 | 解释 |
---|---|
asm-3.3.1.jar | 字节操作框架 |
cglib-2.2.2.jar | 提供方法拦截 |
commons-logging-1.1.1.jar | 日志系统 |
ehcache-core-2.6.5.jar | 缓存框架 |
junit-4.9.jar | 测试 |
log4j-1.2.17.jar ,log4j-api-2.0-rc1.jar ,log4j-core-2.0-rc1.jar | 日志 |
mybatis-3.2.7.jar ,mybatis-ehcache-1.0.2.jar | mybatis相关 |
mysql-connector-java-5.1.7-bin.jar | 数据库连接 |
slf4j-api-1.7.5.jar, slf4j-log4j12-1.7.5.jar | 日志接口 |
<?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/mydb1"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!--用于配置映射器-->
<mappers>
<mapper resource="sqlmap/User.xml"/>
</mappers>
</configuration>
③编写映射器User.xml
<?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="test">
<select id="findUserById" parameterType="int" resultType="com.iot.mybatis.po.User">
select * from user where id=#{value}
</select>
</mapper>
④编写测试
public class MybatisFirst {
@Test
public void findUserByIdTest() throws IOException {
// mybatis配置文件
String resource = "SqlMapConfig.xml";
// 得到配置文件流
InputStream inputStream = Resources.getResourceAsStream(resource);
//创建会话工厂,传入mybatis配置文件的信息
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 通过工厂得到SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
// 通过SqlSession操作数据库
// 第一个参数:映射文件中statement的id,等于=namespace+"."+statement的id
// 第二个参数:指定和映射文件中所匹配的parameterType类型的参数
// sqlSession.selectOne结果 是与映射文件中所匹配的resultType类型的对象
// selectOne查询出一条记录
User user = sqlSession.selectOne("test.findUserById", 1);
System.out.println(user);
// 释放资源
sqlSession.close();
}
}
⑤尝试对过程进行解释
懒得去看源码,大概分析一下mybatis的处理过程,建立一个大概的概念。
映射器mapper将命名空间namespace和sql查询语句绑定在了一起,同时还可以向sql语句传递参数。在sqlMapConfig中同时配置了数据库连接,然后通过工厂SqlSessionFactory的代理建立数据库连接,把查询结果放在sqlSession域中。最后可以在sqlSession中可以得到查询结果。