个人笔记

关于Mybatis需要注意的地方

面向接口编程:
           要求: 1)接口名和映射文件名必须一致!
                      2)接口的方法名必须和映射文件中的标签ID名保持一致
                         调用时使用session.getMapper(接口名.class).方法
XXXmapper.xml映射文件:
    映射关系:将需要的映射对象信息和数据库对象建立关系
   包含的节点信息:
    mapper根节点:可写namespace映射文件的完全限定名
              select等,做DML语句[增删改]或DQL[查]语句的节点            此外:DDL:create drop . DCL:grant revoke
          resultMap:配置映射关系的[配置对象属性和表中列的对应关系]
 select等节点中包含的属性:
                       id:区分不同sql语句
         resultType:返回结果类型[只负责将数据封装到一种对象中即可]
  parameterType:参数类型[只负责封装一种类型的数据传递给SQL]  [只能使用前两中传参方式]
  传多个参数的方式:
             1)封装实体对象
             2)封装Map集合
             3)使用@param注解
                  多个值封装成对象后,要求对象的属性名必须和#{}里的参数名一致!

                  集合的key必须和#{}里的参数名一致!         

                  当数据库中表的列名和实体类中属性名一致时,mybatis会帮我们自动封装数据!!!   

                  自定义封装数据时使用resultMap.
          
                  做增删改需要事务提交!!!
         

                  一对多和多对一参考mapper.xml

 * 动态SQL:
         *    Where + if  -->if不能去掉关键字
         *    set + if    -->set能忽略,但不能忽略无参   通常采用传全参方式[不推荐用动态]
         *    trim + if   -->可加可减代码,还能忽略前面或后面的关键字
         *    forearch    -->拼接多个参数
         *                   数组     list  存储数据即可
         *                   map里面只存放的一个键值对    键是key值是list
		 */
		SqlSession session = MyBatisUtils.openSqlSession();
		/*
		 * 方式一封装对象
		Student stu = new Student();
		stu.setGradeId(3);
		stu.setStudentName("a");
		*/
		/*
		 * 方式二封装集合  ★
		Map<String, String> map = new HashMap<String, String>();
		map.put("gId", "3");
		map.put("sName", "a");
		 **/
		
		/*
		 * 方式三注解传多个值
		 */
//		List<Student> stuList = session.getMapper(StudentMapper.class).getStudentsByTJ3(3,"a");
//		for (Student student : stuList) {
//			System.out.println(student.getStudentNo() + "   " + student.getStudentName() + "   " + student.getGradeId());
//			
//		}
		
		/**
		 * 演示resultMap
		 */
//		List<Student> stuList = session.getMapper(StudentMapper.class).getStudentsByTJ5();
//		for (Student student : stuList) {
//			System.out.println(student.getStudentNo() + "   " + student.getStudentName() + "   " + student.getGradeId() + "   " + student.getGradeId() + "   " + student.getGradeName());
//			
//		}

		//新增
//		try {
//			//新增操作
//			Grade grade = new Grade();
//			grade.setGradeName("bbbbb");
//			session.getMapper(GradeMapper.class).addGrade(grade);
//			session.commit();//不能省
//			System.out.println("新增成功!");
//		} catch (Exception e) {
//			e.printStackTrace();
//			session.rollback();
//			System.out.println("新增失败!");
//		}
		
//		try {
//			//修改操作
//			Grade grade = new Grade();
//			grade.setGradeName("bbbbb");
//			grade.setGradeId(6);
//			session.getMapper(GradeMapper.class).updateGrade(grade);
//			session.commit();//不能省
//			System.out.println("修改成功!");
//		} catch (Exception e) {
//			e.printStackTrace();
//			session.rollback();
//			System.out.println("修改失败!");
//		}
		
//		try {
//			//删除操作
//			session.getMapper(GradeMapper.class).deleteGrade(6);
//			session.commit();//不能省
//			System.out.println("删除成功!");
//		} catch (Exception e) {
//			e.printStackTrace();
//			session.rollback();
//			System.out.println("删除失败!");
//		}
		
//		//多的一方映射查询一的一方
//		List<Student> stuList = session.getMapper(StudentMapper.class).getAllStudents();
//		for (Student stu : stuList) {
//			System.out.println(stu.getStudentNo() + "   " + stu.getStudentName() + "   " + stu.getGrade().getGradeId() + "   " + stu.getGrade().getGradeName());
//			
//		}
		
		//一的一方映射查询多的一方
//		Grade grade = session.getMapper(GradeMapper.class).getGradeById(3);
//		System.out.println(grade.getGradeId() + "  " + grade.getGradeName());
//		List<Student> stuList = grade.getStuList();
//		for (Student stu : stuList) {
//			System.out.println("    " + stu.getStudentNo() + "   " + stu.getStudentName());
//		}
		
		//演示if 和  where
		//Student stu = new Student();
		//stu.setStudentName("a");
		//stu.setGradeId(3);
//		List<Student> stuList = session.getMapper(StudentMapper.class).useIfSelectStudent(stu);
//		for (Student student : stuList) {
//			System.out.println(student.getStudentNo() + "  " + student.getStudentName());
//		}
		
		//演示if 和  set
		//Student stu = new Student();
		//stu.setStudentName("hehe");
		//stu.setGradeId(1);
		//stu.setStudentNo(6);
		//session.getMapper(StudentMapper.class).useSetUpdateStudent(stu);
		
		//演示trim
		//Student stu = new Student();
		//stu.setStudentName("a");
		//stu.setGradeId(3);
		//stu.setStudentNo(6);
		//1
//		List<Student> stuList = session.getMapper(StudentMapper.class).useTrimOperateSql1(stu);
//		for (Student student : stuList) {
//			System.out.println(student.getStudentNo() + "  " + student.getStudentName());
//		}
		
		//2
		//session.getMapper(StudentMapper.class).useTrimOperateSql2(stu);
		
		//演示forearch
		//数组
		//Integer[] stuNos = {1,2,3};
		//List<Student> stuList = session.getMapper(StudentMapper.class).useForearchSql(stuNos);
		//list
//		List<Integer> stuNos = new ArrayList<Integer>();
//		stuNos.add(1);
//		stuNos.add(2);
//		stuNos.add(3);
		//map
		Map<String, List<Integer>> stuNos = new HashMap<String, List<Integer>>();
		List<Integer> stus = new ArrayList<Integer>();
		stus.add(1);
		stus.add(2);
		stus.add(3);
		stuNos.put("mapKey", stus);
		List<Student> stuList = session.getMapper(StudentMapper.class).useForearchSql3(stuNos);
		for (Student student : stuList) {
			System.out.println(student.getStudentNo() + "  " + student.getStudentName());
		}
		
		MyBatisUtils.closeSqlSession(session);
		
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值