mybatis第三章,参数的使用1)简单类型的参数的使用。
一、Dao接口层对接口方法进行定义的时候指定要传入的参数
1 package com.bjpowernode.dao; 2 3 import com.bjpowernode.domain.Student; 4 import org.apache.ibatis.annotations.Param; 5 6 import java.util.List; 7 8 /*创建dao接口,实现操作sql的方法*/ 9 public interface StudentDao { 10 //实现一个查询数据库所有数据的方法,返回的是一个list列表 11 List<Student> selectStudents(); 12 //实现一个查询数据库部分数据的方法,只有一个参数的情况,假设只返回一条数据 13 /** 14 * 一个简单类型的参数,简单类型:mybatis把java的基本数据类型和String都叫做简单类型 15 * 在mapper文件获取简单类型的参数值,使用#{任意字符} 16 * */ 17 Student selectStudentById(Integer id); 18 //实现一个查询数据库部分数据的方法,使用多个参数 19 20 /** 21 * 多个参数 22 * @param id 23 * @param age 24 * @return List<Student> 25 * 多个参数:命名参数,在形参定义的前面加入@Param("自定义参数名称") 26 */ 27 List<Student> selectStudentsByIdOrAge(@Param("myid") Integer id, @Param("myage") Integer age); 28 //实现一个插入数据库数据的方法,往数据库插入数据 29 int insertStudent(Student student); 30 }
二、sqlmapper写sql的时候使用参数值
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE mapper 3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 5 <!--创建sqlmapper,sql映射文件,写执行sql--> 6 <mapper namespace="com.bjpowernode.dao.StudentDao"> 7 <select id="selectStudents" resultType="com.bjpowernode.domain.Student"> 8 select id,name,email,age from student order by id 9 </select> 10 <!--单个参数--> 11 <select id="selectStudentById" resultType="com.bjpowernode.domain.Student"> 12 select id,name,email,age from student where id=#{id} 13 </select> 14 <!--多个参数,使用@Param命名--> 15 <select id="selectStudentsByIdOrAge" resultType="com.bjpowernode.domain.Student"> 16 select id,name,email,age from student where id=#{myid} or age=#{myage} 17 </select> 18 19 <insert id="insertStudent"> 20 insert into student values (#{id},#{name},#{email},#{age}) 21 </insert> 22 </mapper>
三、使用动态代理的方式执行接口方法对应的sql
1 package com.bjpowernode; 2 3 import com.bjpowernode.dao.StudentDao; 4 import com.bjpowernode.domain.Student; 5 import com.bjpowernode.utils.MybatisUtils; 6 import org.apache.ibatis.session.SqlSession; 7 import org.junit.Test; 8 9 import java.util.List; 10 11 /** 12 * @author lihp 13 * @version 1.0 14 * @since 1.0 15 * 使用动态代理的方式sqlsession.getMapper(dao.class)获取dao接口对象,执行对应方法即可 16 * 这样做不用去写StudentDao接口的实现类就可以直接执行对应sql语句 17 * 要求就是我们sqlMapper文件要书写规范,namespace要写dao接口的全限定名称,标签id要写接口方法名 18 */ 19 public class TestMybatis { 20 @Test 21 public void testSelectStudents(){ 22 SqlSession sqlSession = MybatisUtils.getSqlSession(); 23 StudentDao dao = sqlSession.getMapper(StudentDao.class); 24 List<Student> list = dao.selectStudents(); 25 for(Student stu:list){ 26 System.out.println(stu); 27 } 28 sqlSession.close(); 29 } 30 31 @Test 32 public void testInsertStudent(){ 33 SqlSession sqlSession = MybatisUtils.getSqlSession(); 34 StudentDao dao = sqlSession.getMapper(StudentDao.class); 35 //dao使用的是jdk的动态代理 36 Student student = new Student(); 37 student.setId(1006); 38 student.setName("王楠"); 39 student.setEmail("wangnan@qq.com"); 40 student.setAge(29); 41 dao.insertStudent(student); 42 sqlSession.commit(); 43 sqlSession.close(); 44 } 45 /*使用单个参数进行查询*/ 46 @Test 47 public void testSelectStudentById(){ 48 SqlSession sqlSession = MybatisUtils.getSqlSession(); 49 StudentDao dao = sqlSession.getMapper(StudentDao.class); 50 Student stu = dao.selectStudentById(1001); 51 System.out.println(stu); 52 } 53 /*使用多个参数进行查询*/ 54 @Test 55 public void testSelectStudentsByIdOrAge(){ 56 SqlSession sqlSession = MybatisUtils.getSqlSession(); 57 StudentDao dao = sqlSession.getMapper(StudentDao.class); 58 List<Student> list = dao.selectStudentsByIdOrAge(1001,20); 59 for(Student stu:list){ 60 System.out.println(stu); 61 } 62 } 63 }

浙公网安备 33010602011771号