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 }

 

posted @ 2021-02-22 00:15  渐行、渐远  阅读(95)  评论(0)    收藏  举报