1. 程式人生 > >Mapper通過實現介面進行增加和檢視操作

Mapper通過實現介面進行增加和檢視操作

首先,為了避免開啟sql會話的準備工作多次進行,採用靜態方法,對準備工作靜態初始化,建立一個BaseDAO類:

---------------------------------------------程式碼開始---------------------------------------------

package com.dao;

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 BaseDAO {
                    static final String CONFIG_FILE = "mybaits-config.xml";
                    static SqlSessionFactory sqlSessionFactory;
                    static SqlSession session;
                    static {
                            try {
                                InputStream inputStream = Resources.getResourceAsStream(CONFIG_FILE);
                                // sqlSessionFactory是寫在全域性,否則靜態程式碼塊中不能使用,即靜態方法中也不能用
                                sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
                            } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                    }
                
                    public static SqlSession getSession() {
                        return session = sqlSessionFactory.openSession();
                    }
                
}

---------------------------------------------程式碼結束---------------------------------------------

然後,著手準備實體類這裡我準備的是Teacher,程式碼如下:

---------------------------------------------程式碼開始---------------------------------------------

package com.entity;

public class Teacher {
            private int teaId;
            private String teaName;
            private int teaAge;
            public int getTeaId() {
                return teaId;
            }
            public void setTeaId(int teaId) {
                this.teaId = teaId;
            }
            public String getTeaName() {
                return teaName;
            }
            public void setTeaName(String teaName) {
                this.teaName = teaName;
            }
            public int getTeaAge() {
                return teaAge;
            }
            public void setTeaAge(int teaAge) {
                this.teaAge = teaAge;
            }
            @Override
            public String toString() {
                return "Teacher [teaId=" + teaId + ", teaName=" + teaName + ", teaAge=" + teaAge + "]";
            }
}

---------------------------------------------程式碼結束---------------------------------------------

然後,著手準備介面,這裡我準備的是TeacherDAO介面,方法有增加和查詢,程式碼如下

---------------------------------------------程式碼開始---------------------------------------------

package com.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.entity.Teacher;

public interface TeacherDAO {
    //這裡的註解必須存在,它幫助mapper對映檔案識別
    //如果是單個基本型別則不用寫註解,多個基本型別也要寫
        public void add(@Param("tea") Teacher tea);
        public List<Teacher> findAll();
}

---------------------------------------------程式碼結束---------------------------------------------

然後,寫Mapper對映檔案,我這裡寫的是TeacherMapper.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">
<mapper namespace="com.dao.TeacherDAO">
<!-- 注意返回型別resultType的設定 -->
             <insert id="add">
                             insert into teacher values(null,#{tea.teaName},#{tea.teaAge})
             </insert>
             <!-- 這裡返回型別不寫集合,但要寫完整型別名,基本型別可不寫完整的 -->
             <select id="findAll" resultType="com.entity.Teacher">
                             select * from teacher
             </select>
</mapper>

---------------------------------------------程式碼結束---------------------------------------------

然後,可以測試了,這裡直接在main方法中測試,程式碼如下:

增加測試:

---------------------------------------------程式碼開始---------------------------------------------

package com.test;

import org.apache.ibatis.session.SqlSession;

import com.dao.BaseDAO;
import com.dao.TeacherDAO;
import com.entity.Teacher;

public class test {
            public static void main(String[] args) {
                        SqlSession session;
                        Teacher teacher=new Teacher();
                        teacher.setTeaName("李四");
                        teacher.setTeaAge(12);
                        session=BaseDAO.getSession();
                        //TeacherDAO是一個介面,實現類只能通過會話的方法獲得
                        TeacherDAO dao=session.getMapper(TeacherDAO.class);
                        dao.add(teacher);
                        session.commit();
                        session.close();
            }
}

 

---------------------------------------------程式碼結束---------------------------------------------

檢視測試:

---------------------------------------------程式碼開始---------------------------------------------

 

package com.test;

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import com.dao.BaseDAO;
import com.dao.TeacherDAO;
import com.entity.Teacher;

public class test2 {
    public static void main(String[] args) {
        SqlSession session;
        session=BaseDAO.getSession();
        //TeacherDAO是一個介面,實現類只能通過會話的方法獲得
        TeacherDAO dao=session.getMapper(TeacherDAO.class);
        List<Teacher> list=dao.findAll();
        for(Teacher tea: list){
            System.out.println(tea);
        }
        session.close();
   }
}

---------------------------------------------程式碼結束---------------------------------------------

至此,完成。