大三东软暑期实训-mybatis篇

Posted Fire king

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大三东软暑期实训-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
    在这里插入图片描述
  • 传多个参数不封装成对象 int deleteInfoByNameAndDept(@param("empName"),@param("deptName")String ,deptName),@param(“deptName”)括号中的名字一定要和.xml文件中#{}中的名字一样。
  • 查询多个对象,返回的不应该是集合,应该是集合里面的对象,也就是满足ORM中的对象。
  • log4j配置文件一定要在resources下,并且名字不能变,log4j.properties
  • 别名配置将来在spring中配置
  • $取字符串值不加单引号
  • where标签不传值可能会出错
  • 数据库表字段名与实体类属性名不一致时,根据条件和需要可以采用三种方法:别名、resultmap,自动映射的resultmap(配置mapUnderscoreToCamelCase为true,默认就为true)
  • 注意<sql><include>的配合使用
  • 注意<where>的拼接
  • 注意<collection>的使用,collection有array、list等
<select id="batcharray" 
			resultType="User">
		select * from user 
		where id in <!-- foreach用来做批量处理数据
			collection的值是固定的,array表示数组
			item是临时获取到的数据,相当于for循环的i
			open以什么方式开始
			close以什么方式结束
			separator是指在进行SQL拼接时用什么分隔符,但是SQL中只认识逗号(,,,,,)
		 -->
		<foreach collection="array"
					item="i"
					open="("
					close=")"
					separator=",">
					
			#{i}
		</foreach>
	</select>

  • 取代<collection>的是传数组,遍历数组,foreach中执行sql
  • list.add(4)<=>Integer.ValueOf(4)
  • <collection>为map时,collection和key要保持一致:
<!-- 
			当collection接收map的数据格式时,
			collection值就是map封装的key
			
		item表示集合中每一个元素进行迭代时的别名,
			index指 定一个名字,用于表示在迭代过程中,每次迭代到的位置,
			open表示该语句以什么开始,
			separator表示在每次进行迭代之间以什么符号作为分隔 符,
			close表示以什么结束。
 		-->
		<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();
		
		
	}
	

  • <update><insert>没有resultType,默认int

以上是关于大三东软暑期实训-mybatis篇的主要内容,如果未能解决你的问题,请参考以下文章

大三东软暑期实训-SSM整合篇

大三东软暑期实训-SSM实战篇

大三东软暑期实训-spring篇2

大三东软暑期实训-spring篇1

大三东软暑期实训-springmvc篇

大三后端暑期实习面经总结——SSM&微服务框架篇