Mapper动态代理 接口中的方法名与SQL映射文件的映射id(<select id="selectStudentById">
)相同
StudentDao.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <?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.node.dao.StudentDao" > <select id ="selectStudentById" resultType ="map" > select * from student where id=#{xxx} </select > <insert id ="insertStudent" > insert into student(name,age) values(#{name},#{age}) </insert > </mapper >
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 import java.util.HashMap;import java.util.Map;import org.apache.ibatis.session.SqlSession;public class Main { public static void main (String[] args) { SqlSession session=SqlSessionUtil.getSession(); StudentDao dao=session.getMapper(StudentDao.class); System.out.println(dao.selectStudentById(1L )); Student student=new Student (); student.setName("abd" ); student.setAge(20 ); System.out.println(dao.insertStudent(student)); session.commit(); SqlSessionUtil.close(SqlSessionUtil.getSession()); } }
log4j.properties
1 log4j.logger.com.node.dao.StudentDao =trace,console
方法的参数列表只能有一个参数,参数为基本类型对象,实体类对象,或者Map
MyBatis根据方法名调用对应的SQL映射,根据方法的参数列表设置语句中的预编译, 进行查询时,会根据方法返回值调用selectOne()方法或selectList()方法。
当接口方法的返回值类型为List时,MyBatis会执行selectList()方法,将SQL映射的每条记录的封装体添加到List中返回。
当接口方法的返回值类型是Map,实体类,包装类,基本数据类型时,MyBatis会执行selectOne(),将SQL映射的指定每条记录的封装体直接进行返回,要求数据封装对象与返回值类型相同。
当接口的方法对应的SQL映射是添加,修改,删除时,接口方法返回值类型为void或者整数类型,整数类型表明影响了多少条记录。