前面一章mybatis入门中已经搭建好了mybatis的运行环境,并且实现了一个简单的查询,该方式是sqlSession实例来直接执行已映射的sql语句
session.selectOne(“cn.bdyl.model.UserMapper.selectUserById”,1);
下面我们介绍下以接口的方式编程的方法(使用该方式能有效的避免字符串文字和转换的错误):
首先,在src创建一个专门用于存放合理描述参数和SQL语句返回值的接口(UserMapper):
package cn.bdyl.mapper;
import cn.bdyl.model.User;
public interface UserMapper {
public User selectUserById(int id);
}
最终目录结构如下:
注意:该接口中的selectUserById方法名必须与User.xml文件中select标签的id属性相同,并且mapper标签的namespace属性值必须与UserMapper接口的路径形同。
做好了以上步骤后,我们需要来重写一下test代码
package cn.bdyl.test;
import java.io.Reader;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import cn.bdyl.mapper.UserMapper;
import cn.bdyl.model.User;
public class Test {
private static SqlSessionFactory sqlSessionFactory;
private static Reader reader;
static{
try {
reader = Resources.getResourceAsReader("Configuration.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (Exception e) {
e.printStackTrace();
}
}
public static SqlSessionFactory getSession(){
return sqlSessionFactory;
}
public static void main(String[] args) {
SqlSession session = sqlSessionFactory.openSession();
try {
UserMapper userMapper = session.getMapper(UserMapper.class);
User user = userMapper.selectUserById(1);
System.out.println(user.getName()+"--"+user.getAddress()+"--"+user.getSex());
} catch (Exception e) {
e.printStackTrace();
}finally{
if(session != null){
session.close();
}
}
}
}
输出结果: