本篇是关于MyBatis的配置过程
1.mybatis配置文件(mybatis-config.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与数据库的链接 -->
<configuration>
<!-- 引入jdbc.properties -->
<properties resource="jdbc.properties"/>
<!-- 配置mybatis的log实现为LOG4J-->
<settings>
<setting name="logImpl" value="LOG4J"/>
</settings>
<typeAliases>
<!-- <typeAlias type="pojo.User" alias="User"/> -->
<!-- 包下的别名即其类名 -->
<package name="pojo"/>
</typeAliases>
<environments default="development">
<environment id="development">
<!-- 配置事务管理 ,采用JDBC-->
<transactionManager type="JDBC"/>
<!-- POOLED :MyBatis数据源,JNDI基于tomcat的数据源 -->
<dataSource type="POOLED">
<property name="driver" value="${driverClass}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="dao/user/UserMapper.xml"/>
<mapper resource="dao/role/RoleMapper.xml"/>
</mappers>
</configuration>
2.mapper文件中配置(以UserMapper.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">
<!-- namespace中填写映射的类的全限定名 -->
<mapper namespace="dao.role.RoleMapper">
<!-- 根据需求填写select、insert等 -->
<select id="getUserList" resultType="User">
select * from user
</select>
</mapper>
3.被映射的接口(以UserMapper.java为例):
public interface UserMapper {
//接口中方法的名字要和映射配置文件中的id一致
public List<User> getUserList();
}
4.Mybatis工具类(MyBatisUtil.java):
public class MyBatisUtil {
private static SqlSessionFactory factory;
static {
//放在静态代码块下,factory只会被创建一次
try {
//读取mybatis配置文件,转成输入流的形式
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
//创建符合配置文件要求的工厂
factory = new SqlSessionFactoryBuilder().build(is);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
public static SqlSession createSqlSession() {
return factory.openSession();
}
public static void closeSqlSession(SqlSession sqlSession) {
if (null != sqlSession) {
sqlSession.close();
}
}
}
5.调用mapper中的功能:
public class UserDaoTestByMapper {
private Logger logger = Logger.getLogger(UserDaoTestByMapper.class);
@Test
public void getUserList() {
SqlSession sqlSession = null;
List<User> userList = new ArrayList<User>();
try {
sqlSession = MyBatisUtil.createSqlSession();
userList = sqlSession.getMapper(UserMapper.class).getUserList();
for (User user : userList) {
logger.debug("user==>"+user);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
MyBatisUtil.closeSqlSession(sqlSession);
}
}
}