前面一章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();
}
}
}
}
輸出結果: