加载映射文件的另外一种方式
如果想把映射文件放到磁盘其他怎么做?
在mybatis-config.xml,采用以下方式:
<mappers>
<mapper url="file:///c:/UserMapper.xml"/> 适用于项目的生产环境
</mappers>
实体类和核心配置文件完成后
封装SqlSession工具类
package com.oupeng.util;
import java.io.IOException;
import java.io.InputStream;
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 SqlSessionUtil {
public static SqlSessionFactory factory;
static {
String resource="mybatis-config.xml";
try {
InputStream is=Resources.getResourceAsStream(resource);
factory=new SqlSessionFactoryBuilder().build(is);
} catch (IOException e) {
e.printStackTrace();
}
}
//定义或创建SqlSession方法
public static SqlSession creatSqlSession() {
SqlSession sqlSession=factory.openSession();
return sqlSession;
}
//关闭SqlSession
public static void closSqleSession(SqlSession _sqlSession) {
if(_sqlSession!=null) {
_sqlSession.close();
}
}
}
范例:统计当前用户表中的记录数
1、UserMapper接口
public int count();
2、映射文件
<select id="count" resultType="Integer">
select count(1) as count from smbms_user
</select>
3、测试类
@Test
public void test1() {
// 加载MyBatis的配置文件
String str = "mybatis-config.xml";
SqlSession sqlSession = null;
InputStream inputStream;
int count = 0;
try {
// 读取MyBatis的配置文件
inputStream = Resources.getResourceAsStream(str);
// 创建SqlSessionFactory工厂
SqlSessionFactory sqlSessionFactory =new SqlSessionFactoryBuilder().build(inputStream);
// 创建SqlSession
sqlSession = sqlSessionFactory.openSession();
// 统计当前用户的记录数
//count = Integer.parseInt(sqlSession.selectOne("com.oupeng.user.dao.UserMapper.count").toString());
count =sqlSession.getMapper(UserMapper.class).count();
System.out.println("当前系统用户数为:" + count + "人...");
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭sqlSession
if(sqlSession!=null){
sqlSession.close();
}
}
}
范例:查询当前所有的用户记录
1、接口方法
public List<User> getUserList();
2、映射文件
<!-- 查询用户所有记录 -->
<select id="getUserList" resultType="User">
select * from smbms_user
</select>
测试类
@Test
public void test2() {
//打开SqlSession
SqlSession sqlSession=SqlSessionUtil.creatSqlSession();
//List<User> list=sqlSession.selectList("com.oupeng.user.dao.UserMapper.getUserList");
List<User> list=sqlSession.getMapper(UserMapper.class).getUserList();
//遍历结果集
for(User u:list) {
System.out.println(u.getUserName()+"\t"+u.getUserPassword()+"\t"+u.getAddress());
}
//关闭SqlSession
SqlSessionUtil.closSqleSession(sqlSession);
}