1.模糊查询
/** * 测试模糊查询 * @param mohu * @return */ List<User> testMohu(@Param("mohu") String mohu);
mapper文件:
<!--List<User> testMohu(@Param("mohu") String mohu);--> <select id="testMohu" resultType="User"> <!--select * from t_user where username like '%${mohu}%'--> <!--select * from t_user where username like concat('%',#{mohu},'%')--> select * from t_user where username like "%"#{mohu}"%" </select>
2.处理批量删除
在进行批量删除的时候必须使用${},因为${}是拼接,在sql执行时参数不带有引号
而使用#{}时,#{}是占位符赋值操作,在此操作下sql语句参数带有引号,sql报错
接口方法:
/** * 处理批量删除 */ int deleteMore(@Param("ids") String ids);
mapper文件:
<!--int deleteMore(@Param("ids") String ids);--> <delete id="deleteMore"> delete from student where id in (${ids}) </delete>
测试类方法:
@Test
public void deleteMore(){ SqlSession sqlSession = MybatisUtils.getSqlSession(); StudentDao dao = sqlSession.getMapper(StudentDao.class); int i = dao.deleteMore("1004.1008"); sqlSession.commit(); System.out.println("i=="+i); sqlSession.close(); }
3.动态设置表名
当一张表中的数据太多时,我们将一张大表分成几张小的表来共同存储数据(表中的属性都是一样的)
当要选用其中某一张表时,就会用到动态设置表明的操作
当使用到动态设置表明时要使用${}来拼接sql语句 这样sql语句再能正确执行;而使用#{}时因为带有引号的原因,sql会报错
接口方法:
/** * 动态设置表名 * @param Tablename * @return */ List<Student> SelectStudentTable(@Param("TableName") String Tablename);
mapper文件:
<!--List<Student> SelectStudentTable(@Param("TableName") String Tablename);--> <select id="SelectStudentTable" resultType="student"> select * from ${TableName} </select>
测试类方法:
@Test public void SelectStudentTable(){ SqlSession sqlSession = MybatisUtils.getSqlSession(); StudentDao dao = sqlSession.getMapper(StudentDao.class); List<Student> students = dao.SelectStudentTable("student"); for (Student stu : students){ System.out.println("stu-->"+stu); } sqlSession.close(); }
4.添加功能获取自增的主键
t_clazz(clazz_id,clazz_name)
t_student(student_id,student_name,clazz_id)
1、添加班级信息
2、获取新添加的班级的id
3、为班级分配学生,即将某学的班级id修改为新添加的班级的id
为了获取添加的信息中的自增主键
接口方法:
/** * 添加功能获取自增主键 * @param student */ void InsertStudent(Student student);
mapper文件:
<!--void InsertStudent(Student student); useGeneratedKeys:设置当前标签中的sql使用了自增的主键 keyProperty:将自增的主键的值赋值给传输到映射文件中参数的某个属性 --> <insert id="InsertStudent" useGeneratedKeys="true" keyProperty="id"> insert into student values (null,#{name},#{email},#{age}) </insert>
测试类方法:
@Test public void InsertStudent(){ SqlSession sqlSession = MybatisUtils.getSqlSession(); StudentDao dao = sqlSession.getMapper(StudentDao.class); Student s = new Student(); s.setName("高峰"); s.setEmail("dadd@gamil.com"); s.setAge(23); dao.InsertStudent(s); System.out.println("s-->"+s); sqlSession.commit(); sqlSession.close(); }