文章目录
自动回复机器人学习Mybatis
2-7代码重构
中文乱码问题
我们从request中取字符串,则设置request的字符集为utf-8
当然也可以写过滤器来实现.下面的代码是通过servlet自己写逻辑实现
//设置编码
request.setCaracterEncoding("UTF-8");
第3章实战部分 Mybatis 来袭
Mybatis下载地址:
https://github.com/mybatis/mybatis-3/releases
(注意:不要下载快照版本,即SNAPSHOT版本)
操作(搭建mybatis):
- 导入Mybatis的jar包
- Mybatis的配置文件(视频4分钟的位置)
*SqlSession的作用*
1.向sql语句传入参数;
2.执行sql语句
3.获取执行sql语句的结果
4.事务的控制
*如何得到SqlSession*
1.通过配置文件获取数据库连接相关信息
2.通过配置信息构建SqlSessionFactory
3.通过SqlSessionFactory打开数据库会话,即SqlSession
访问数据库
5-2一对多关系的配置
一对多关系在xml配置文件中配置ResultMap,子表该如何对应?
例如主表是MainResult.xml 字表是SubResult.xml 在主表中配置ResultMap
<mapper namespace = "Command">
<resultMap type="com.imooc.bean.Command" id="Command">
<id column="ID" jdbcType="INTEGER" property="id" />
<result column="NAME" jdbcType="VARCHAR" property="name" />
<!--重点在这里!!!!! 在resultMap当中通过另一个xml的namespace找到它-->
<collection property="contentList" resultMap="CommandContent.Content"/>
</resultMap>
</mapper>
问题:resultMap中column代表什么?
column不是数据库中的字段名,尽管它时常同名,column代表的应该是sql语句中对应的列名。
例如
- select aa,bb from table 则此时对应的是aa
- 假如加上别名 select aa as abc ,bb from table ,则此时对应的是abc
- 列名前面的前缀,是不能算作column的一部分的。例如 c.aa 这样是不可以的;
5-4常用标签
- Where
<where>
</where>
- sql标签
<sql id="columns"> ID,COMMAND,CONTENT,DESCRIPTION</sql>
- select update delete 标签
- set标签
- trim标签
<!--这样写就可以代替where标签了 -->
<trim prefix="where" suffix="test" prefixOverrides="and">
</trim>
- mybatis中没有 if else,代替它的是 choose when otherwise
<choose>
<when test="">
</when>
<when test="">
</when>
<otherwise></otherwise>
</choose>
- association 标签 (11’30" 视频练习)
总结:通过一个表格来看
定义sql语句 | |
select | |
insert | |
update | |
delete | |
配置java对象属性与查询结果集中列名对应关系 | resultMap |
控制动态SQL拼接 | |
foreach | |
if | |
choose (when otherwise) | |
格式化输出 | |
where | |
set | |
trim | |
配置关联关系 | |
collection | |
association | |
定义常量 | sql |
引用常量 | include |