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();
   }
}

---------------------------------------------代码结束---------------------------------------------

至此,完成。

猜你喜欢

转载自blog.csdn.net/qq_41857764/article/details/85297090