大三东软暑期实训-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篇的主要内容,如果未能解决你的问题,请参考以下文章