-
Mybatis简介
个人认知:用于dao层的框架,如:Hibernate。主要用于数据库增删改查。
api地址:http://www.mybatis.org/mybatis-3/zh/index.html
-
Mybatis环境搭建
1.是导入jar包(mybatis和mysql-connector-java), 然后进行Build Path中的Add to build path操作。
2.要书写配置mybatis-config.xml(在src下),需要先编写文档头,然后进行环境配置。
- 事务管理器(transactionManager):
(1)JDBC – 这个配置就是直接使用了 JDBC 的提交和回滚设置,它依赖于从数据源得到的连接来管理事务作用域。
(2)MANAGED – 这个配置几乎没做什么。它从来不提交或回滚一个连接,而是让容器来管理事务的整个生命周期。
- 数据源(dataSource)
分为UNPOOLED,POOLED与JNDI。
注:加载映射文件则是为了建立mybatis-config.xml与TestMapper.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">
<configuration>
<!-- 配置环境(连接数据库信息) -->
<environments default="shxt">
<environment id="shxt">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/ty7" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<!-- 加载映射文件 -->
<mappers>
<mapper resource="com/shxt/test/TestMapper.xml"/>
</mappers>
</configuration>
至此,Mybatis的大环境就算搭建好了,接下来我们来测试下是否好用。
-
Mybatis环境测试:
1.书写测试类
package com.shxt.test;
import java.io.IOException;
import java.io.InputStream;
import java.util.Map;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class MybatisTest {
public static void main(String[] args) {
SqlSession sqlSession = null;
try {
//加载核心配置文件
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
//创建sqlsession工厂 -->相当于connection
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
//获取session -->相当于执行sql语句对象
sqlSession = sqlSessionFactory.openSession();
//执行sql
Map<String,Object> map = sqlSession.selectOne("com.shxt.model.User.load");
System.out.println(map);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
if(sqlSession!=null) {
sqlSession.close();
}
}
}
}
2.书写映射文件
<?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.shxt.model.User">
<!-- 通过id返回数据 -->
<select id="load" resultType="map">
select * from user where user_id=1
</select>
</mapper>
注:(1)TestMapper.xml(在src下),命名规则为实体类+Mapper.xml为命名,同样首先进行的是文档头的编写.
(2)namespace(相当于id)能够定位到这篇文档,select标签中的id则能定位到该语句。
(3)resultType="map"中的map是类型别名。当返回一条数据时写返回数据的类型,返回多条数据时写返回数据的泛型。