1. 程式人生 > >mybatis學習之根據id查詢使用者例子

mybatis學習之根據id查詢使用者例子

1、建立po類

根據資料庫欄位一一生成表的po類 在此處我們生成一個User類
    //屬性名和資料庫表的欄位一一對應
    private int id;
    private String username;// 使用者姓名
    private String sex;// 性別
    private Date birthday;// 生日
    private String address;// 地址
get and set...

2、配置對映檔案(User.xml)

對映檔案命名:

mapper代理的對映檔名稱格式為xxxMapper.xml,比如:UserMapper.xml,ItemsMapper.xml

在對映檔案中配置sql語句,插入初始化語句:
<?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="test">
</mapper>
我們在mapper中插入如下程式碼:
    <!-- 在對映檔案中配置很多sql語句 -->
    <!--
    需求:通過id查詢使用者資料
    -->
    <!--
    通過select來執行資料庫的查詢操作
    ID:標識對映檔案中的sql,成為statementid
    將sql語句封裝到mappedStatement物件中
    parameterType: 指定輸入引數的型別,這裡指定為int型
    #{}表示一個佔位符
    #{id},其中的id表示接受輸入的引數,引數名稱為id
    resultType : 指定sql輸出結果所對映的java物件型別,這裡select指定resultType表示單條記錄所對映成的java物件
    -->
    <select id="findUserById" parameterType="int" resultType="pojo.User">
        SELECT * FROM USER WHERE id = #{id}
    </select>

3、在SqlMapConfig.xml中載入對映檔案

在SqlMapConfig.xml中載入User.xml
   <!-- 載入對映檔案 -->
    <mappers>
        <mapper resource="sqlmap/User.xml"></mapper>
    </mappers>

4、程式編寫

在這裡我們先用Junit單元測試測試一下, 新建一個測試類,在測試類下加入如下程式碼(過程可看註釋)
//根據id查詢使用者的資訊,得到一條記錄
    @Test
    public void findUserByIdTest(){
        //mybatis配置檔案
        String resource = "SqlMapConfig.xml";
        SqlSession sqlSession = null;
        try {
            InputStream inputStream = Resources.getResourceAsStream(resource);
            //建立會話工廠,傳入mybatis的配置資訊
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            //通過工廠得到SqlSession
            sqlSession = sqlSessionFactory.openSession();
            //通過SqlSession來操作資料庫
            //第一個引數:對映檔案中的statementID 等於namespace + "." + ID
            //第二個引數:和對映檔案中所匹配的parameterType型別的引數
            //sqlSession.selectOne 的結果型別就是你對映檔案中所匹配的resultType型別
            User user = sqlSession.selectOne("test.findUserById", 1);
            System.out.print(user);
        }catch (IOException e){
            e.printStackTrace();
        }finally {
            //釋放資源
            sqlSession.close();
        }
    }

測試執行後可看結果

對映檔案命名:

mapper代理的對映檔名稱格式為xxxMapper.xml,比如:UserMapper.xml,ItemsMapper.xml