大三东软暑期实训-mybatis篇

  • mybatis的使用需要两个依赖(mybatis框架底层依赖jdbc),一个是mybatis的框架包,另一个是jdbc的驱动包,其中jdbc的驱动包与数据库的版本有关,mysl数据库为8.多的就要8.多的。直接搜mysql,选第一个
  • jdbc比mybatis安全,因为它是原生的
  • mybatis特性,实现ORM(对象关系映射),数据库表->实体类,表字段->实体类属性,表中每一条数据都会自动封装到类的实例中。
  • mysql8的jdbc驱动不一样,还有url中加时区
  • mybatis不支持事务,session.commit(),或者openSession(true)
  • #{对象的属性}相当于调用了对象.get方法
  • 传入的参数是String或者Integer时可以不写,对象类型就要写。
  • 加载sqlMapConfig.xml得到sqlSessionFactory对象,sqlSessionFactory创建sqlSession.sqlSession执行sql
    大三东软暑期实训-mybatis篇_第1张图片
  • 传多个参数不封装成对象 int deleteInfoByNameAndDept(@param("empName"),@param("deptName")String ,deptName),@param(“deptName”)括号中的名字一定要和.xml文件中#{}中的名字一样。
  • 查询多个对象,返回的不应该是集合,应该是集合里面的对象,也就是满足ORM中的对象。
  • log4j配置文件一定要在resources下,并且名字不能变,log4j.properties
  • 别名配置将来在spring中配置
  • $取字符串值不加单引号
  • where标签不传值可能会出错
  • 数据库表字段名与实体类属性名不一致时,根据条件和需要可以采用三种方法:别名、resultmap,自动映射的resultmap(配置mapUnderscoreToCamelCase为true,默认就为true)
  • 注意的配合使用
  • 注意的拼接
  • 注意的使用,collection有array、list等
<select id="batcharray" 
			resultType="User">
		select * from user 
		where id in 
		<foreach collection="array"
					item="i"
					open="("
					close=")"
					separator=",">
					
			#{i}
		foreach>
	select>

  • 取代的是传数组,遍历数组,foreach中执行sql
  • list.add(4)<=>Integer.ValueOf(4)
  • 为map时,collection和key要保持一致:

		<select id="foreachmap" resultType="User">
			select * from user where id in
			<foreach collection="key" 
				 open="(" 
				 close=")" 
				 separator="," 
				 item="i">
				#{i}
			foreach>
		select>
	public void foreachMap(){
     
		//创建会话
		SqlSession session = 
				ssf.openSession();
		
		
		//定位SQL并执行
		Map map = new HashMap();
		map.put("key",new int[]{
     23,24,25});
		
		//第一个参数用来定位SQL
		//第二个参数用来给SQL传参,map类型
		List<User> list = 
				session.selectList(
					"DynamicSqlMapper.foreachmap", 
					map);
		
		//遍历list
		for (User user : list) {
     
			System.out.println(user);
		}
		
		//释放资源
		session.close();
		
		
	}
	

  • 没有resultType,默认int

你可能感兴趣的:(东软实训,spring,mybatis,数据库,java,mysql)