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