7.28--SSH学习之MyBatis-Mapper

Mapper作为Mybatis独有的,不需要写实现类

下面介绍一个简单运用mapper的例子:

在建立mapper类后,需要建立和其对应的映射文件

package com.su.mapper;

import java.util.List;

import com.su.domain.Student;

public interface StudentMapper {

    public List<Student> findAllStudents();

    public Student findStudentById(Integer stuId);

    public void addStudent(Student stu);

    public void updateStudent(Student stu);

    public void deleteStudent(Integer stuId);
}


上面接口中的方法名作为映射文件中的id,这样调用方法就很方便了

<?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.su.mapper.StudentMapper">

    <!-- 查询全部 -->
    <select id="findAllStudents" resultType="student">
        select * from student
    </select>

    <!-- 根据id查询 -->
    <select id="findStudentById" parameterType="java.lang.Integer" resultType="student">
        select * from student where stuid = #{value}
    </select>

    <!-- 新增学生信息 -->
    <insert id="addStudent" parameterType="student">
        <selectKey keyProperty="stuId" order="BEFORE" resultType="java.lang.Integer">
            SELECT stu_seq.nextval from dual
        </selectKey>
        insert into student values(#{stuId},#{stuName},#{stuGender},#{stuAge},#{classesId})
    </insert>

    <!-- 更新学生信息 -->
    <update id="updateStudent" parameterType="student">
        update student set stuname=#{stuName},stugender=#{stuGender},stuage=#{stuAge},classesid=#{classesId} where stuid=#{stuId}
    </update>

    <!-- 根据id删除信息 -->
    <delete id="deleteStudent" parameterType="java.lang.Integer">
        delete from student where stuid=#{stuId}
    </delete>

</mapper>


写一个测试类:
第一种方式:

package com.su.test;

import java.io.InputStream;
import java.util.List;

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 com.su.domain.Student;
import com.su.mapper.StudentMapper;

public class TestStudentMapper {

    public static void main(String[] args) {
        try{
            //加载配置文件
            InputStream is = Resources.getResourceAsStream("mybatisconfig.xml");
            //创建SqlSessionFactory对象
            SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(is);
            //创建SqlSession
            SqlSession ss = ssf.openSession();

            StudentMapper sm = ss.getMapper(StudentMapper.class);
            List<Student> list = sm.findAllStudents();
            for(Student stu : list){
                System.out.println("名字:"+stu.getStuName()+"\t++++年龄:"+stu.getStuAge());
            }       
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}


下面介绍第二种测试类:

package com.su.mapper;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

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 com.su.domain.Student;

public class RunStudentMapper {

    private SqlSession sqlSession;

    public RunStudentMapper(){
        try{
            InputStream inputStream = Resources.getResourceAsStream("mybatisconfig.xml");
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            sqlSession = sqlSessionFactory.openSession();
        }catch(Exception e){
            e.printStackTrace();
        }
    }

    public void runAddStudent(Student stu){
        StudentMapper stuMapper = sqlSession.getMapper(StudentMapper.class);
        stuMapper.addStudent(stu);
        System.out.println("增加成功");
        sqlSession.commit();
    }

    public void runDeleteStudent(Integer stuId){
        StudentMapper stuMapper = sqlSession.getMapper(StudentMapper.class);
        stuMapper.deleteStudent(stuId);
        System.out.println("删除成功");
        sqlSession.commit();
    }

    public void runUpdateStudent(Student stu){
        StudentMapper stuMapper = sqlSession.getMapper(StudentMapper.class);
        stuMapper.updateStudent(stu);
        System.out.println("修改成功");
        sqlSession.commit();
    }

    public Student runFindStudentById(Integer stuId){
        StudentMapper stuMapper = sqlSession.getMapper(StudentMapper.class);
        Student stu = stuMapper.findStudentById(stuId);
        System.out.println("查询成功");
        sqlSession.commit();
        return stu;
    }

    public List<Student> runFindAllStudent(){
        List<Student> list = new ArrayList<Student>();
        StudentMapper stuMapper = sqlSession.getMapper(StudentMapper.class);
        list = stuMapper.findAllStudents();
        System.out.println("查询成功");
        sqlSession.commit();
        return list;
    }

}


package com.su.test;

import java.util.List;

import com.su.domain.Student;
import com.su.mapper.RunStudentMapper;

public class TestRunStudentMapper {

    public static void main(String[] args) {
        RunStudentMapper rsm = new RunStudentMapper();

        //增加信息
//      Student stu = new Student();
//      stu.setStuName("老刘");
//      stu.setStuGender("男");
//      stu.setStuAge(35);
//      stu.setClassesId(2);
//      rsm.runAddStudent(stu);

        //删除信息
//      rsm.runDeleteStudent(20);

        //查询全部
//      List<Student> list = rsm.runFindAllStudent();
//      for(Student stu : list){
//          System.out.println(stu.getStuName());
//      }
    }
}


可见第二种在main方法中代码比较简单

以上就是今天复习内容,供以后复习


Author:su1573

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ssy03092919

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值