自动回复机器人学习Mybatis

自动回复机器人学习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语句中对应的列名。

例如

  1. select aa,bb from table 则此时对应的是aa
  2. 假如加上别名 select aa as abc ,bb from table ,则此时对应的是abc
  3. 列名前面的前缀,是不能算作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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值