为了账号安全,请及时绑定邮箱和手机立即绑定

通过自动回复机器人学Mybatis---基础版

难度中级
时长 4小时30分
学习人数
综合评分9.73
430人评价 查看评价
9.9 内容实用
9.7 简洁易懂
9.6 逻辑清晰
  • 乱码排查: 1. servlet传参时的编码:request.setCharacterEncoding("utf-8");或直接使用过滤器; 2. Java文件本身的编码; 3. 链接数据库的参数中,设定编码方式:jdbc:mysql://192.168.1.1:3306/cms?characterEncoding=utf-8 4. 数据库、表的编码; 5. 展示页面的编码:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> useGeneratedKeys属性设为true,可获取自增长的id
    查看全部
    0 采集 收起 来源:常见问题解析

    2018-03-22

  • 判断是否是好代码:
    查看全部
  • resultMap与resultType属性都是表示结果集与java对象之间的关系.但要注意两者区别. 如果用了resultType属性就不用在Sql配置文档中配置<resultMap>标签. resultType映射的原理是:如果映射到自定义类,那么javabean中的属性名与查询出来的列名相同的时候就表示他们有映射关系(大小写不敏感,也不用考虑同名列名的问题),结果集就会放进这些javabean的属性中. resultType也可以映射到Map中,那么查询的列名就是key值,数据就是value值. resultMap属性="要映射的<resultMap>标签的id值" resultType属性="要映射的java类" <select id="find" resultMap="resultMessage"> select * from message </select> <select id="find" resultType="com.imooc.Message"> select * from message </select> //此时就不需要配置<resultMap>标签.
    查看全部
  • resultMap:在XML配置的map,若不配置,只能按列名与对象的属性名来对应填充,不区分大小写 resultType:Java对象 parameterMap:不推荐使用 #{}:有预编译,可防sql注入, ${}:无预编译,直接拼接参数,字符串无引号;
    查看全部
  • resultMap:在XML配置的map,若不配置,只能按列名与对象的属性名来对应填充,不区分大小写 resultType:Java对象 parameterMap:不推荐使用 #{}:有预编译,可防sql注入, ${}:无预编译,直接拼接参数,字符串无引号;
    查看全部
  • 容易混淆的概念
    查看全部
  • Mybatis前世今生
    查看全部
  • 一、resultMap和resultType:当配置resultType时,就不需要配置resultMap,看似resultType方便,但是会被受限制,没有resultMap开放多。 相同点:都是表示查询结果集的类型。 不同点:resultMap需要手动配置映射关系,而resultType是直接指定java类型或者自定义的实体类型,查询结果集的列名必须和实体属性名称一致(实体类:名称大小写可以忽略;java类型,如Map集合的key大小写要一致,尽量都大小写规范,如果不放心可以select ID id,...)。 优缺点: 1、resultType结果集列名要与java属性名一样,但是resultMap不受限制,因为resultMap有column来规定。 2、由于SQL类型与Java中类型部分不匹配,resultMap可以通过typeHandler=""来匹配(如:SQL中的0和1来表示java中的false和true;Date类型的转换),但是resultType无能为力。 二、parameterMap和patameterType: 表示传入参数的对应关系,前者不推荐使用,只是mybatis为了适应以前的版本。 提示:看到Map字眼的想到映射关系,看到Type字眼的想到类型。 三、#{}和${}: 相同点:都是用来作为占位符。 不同点:#{}在预编译的时候会呗替换为?,而${}在预编译的时候直接将变量的值替换进去,而且没有引号(所以还要加上“'${...}'”),故一般都是用前者,个别情况会使用后者:如需进行排序,且排序字段为参数时可以使用${}(order by后面不喜欢被预编译,所以使用${}更为恰当)。 四、#{}和ognl:在#{}中如果是基本类型,其中的名称可以随便写(不推荐),但一般都用_parameter,因为值唯一,而ognl中必须写成_parameter的方式
    查看全部
  • mybatis常用的标签,其中select查询时不应该使用*号而是使用各列名,sql用来定义常量,多用于定义经常使用到的列名,然后通过include标签引用
    查看全部
    0 采集 收起 来源:常用标签

    2016-11-27

  • Ps1: <where><if test=""></if>...</where>标签相当于“where 1=1 and...”,<where>标签和where 1=1不可共存,两者取其一即可。 Ps2: <select> select <include refid="columns"></include> from command </select> <sql id="columns">a.id C_ID,b.id,b.commandId</sql> //作用:增强了维护性,减少代码复用。 Ps3: //解析:<trim>标签在<select>/<update>等内使用。prefix在sql语句最前面加上,suffix在sql语句最后面加上,去掉sql语句最前面prefixOverrides,去掉sql语句最后面suffixOverrides。 <trim prefix="where" suffix="test" prefixOverrides="andor" suffixOverrides=","> //sql语句 </trim> 提示:prefix="where" prefixOverrides="andor"等价于<where>;prefix="set" suffixOverrides=","等价于<set>。 Ps4: <choose> <when test=""></when> <when test=""></when> <otherwise></otherwise> </choose> 理解1:if—else if—else 理解2:switch—case—case—default Ps5: <collection property="主实体类中的List<子实体类>的对象名" resultMap="子xml中mapper中属性namespace名.resultMap的id名"/>//这条语句写在主xml<resultMap>中。 <association property="子实体类中的主实体类的对象名" resultMap="主xml中mapper中属性namespace名.resultMap的id名"/>//这条语句写在子xml<resultMap>中。
    查看全部
    0 采集 收起 来源:常用标签

    2018-03-22

  • Mybatis常用标签 用到sql标签时 需要配合使用include标签
    查看全部
    0 采集 收起 来源:常用标签

    2016-11-27

  • 在子表类的Sql配置文档的<resultMap>标签下需要添加一个<association>标签来指明当前子表这个类里包含着一个主表类类型的成员变量. 其中<assoication>标签有property、column(可无)、javaType属性、resultMap属性. property属性指明在子表类中的主表类类型的成员变量名. column属性指明数据库中的字段. javaType属性指明主表类的类名. resutlMap属性指明主表类的<resultMap>标签的id属性的属性值. 在<association>标签下有<id>与<result>子标签,他们都有property与column属性.来表明主表类的所有成员变量.或者直接用resultMap属性直接替代,就可以不用写子标签. (在子表的Sql配置文件) <resultMap type="com.imooc.Content" id="Content"> <id column="ID" jdbcType="Integer" property="id"/> <result column="Content" jdbcType="VARCHAR" property="content"/> <result column="CommandId" jdbcType="Integer" property="commandId"/> <association property="command" javaType="com.imooc.Command"> <id column="CID" property="id"/> <result column="name" property="name"/> <result column="description" property="description" /> </association> </resultMap> 等于: <resultMap type="" id=""> <id column="" jdbcType="" property=""/> <result column="" jdbcType="" property=""/> <association property="" resultMap="" /> </resultMap>
    查看全部
  • 且当select u.name from User as u,column属性不能写成u.name,不能带表名.因为在jdbc的ResultSet接口根据列名获取数据的方法中,根据的列名是没有表名前缀的.因此表名前缀会失效. 所以在Mybatis一对多关联的Sql配置文档下的<select>标签的sql语句不能出现两个字段名相同的查询.否则在相关联的不同Sql配置文件的<resultMap>标签下的其他标签的column属性就会重复,Mybatis并不知道这个重复的字段是属于哪个表的.所以要不起别名,要不设计数据库不同表之间不能出现同名的列名. 要不设置别名: <select id="getMessageCom" resultMap="resultMapCom"> select a.id as cid,a.name,a.description,b.id,b.content from command as a left join content as b on a.id=b.commandid </select> 要不就设计表时列名不重复: <select id="getMessageCom" resultMap="resultMapCom"> select a.cid,a.name,a.description,b.id,b.content from command as a left join content as b on a.id=b.commandid </select>
    查看全部
  • 1.<select>标签中查询出来的类名要和<resultMap>中的column属性值一致。但规定<resultMap>的column属性值不能写成“表名.列名”,而是直接写数据库中的列名或别名。 2.如果两个表中都有ID属性,但因为规定<resultMap>的column属性值不能写成“表名.列名”,这时候要怎么办呢?可以用别名来代替。 在主表类的Sql配置文档的<resultMap>标签下需要添加一个<collection>标签来指明我当前主表这个类里包含着子表类的集合.其中<collection>标签下存在property属性与resultMap属性.没有column属性,因为在数据库表中不会额外创建一个此集合的字段.property属性表示主表类中哪个属性名,resultMap属性要指明包含的子表类的Sql配置文件的<resultMap>标签的id值. <resultMap type="com.imooc.Command" id="Command"> <id column="CID" jdbcType="Integer" property="id"/> <result column="Name" jdbcType="VARCHAR" property="name"/> <result column="Description" jdbcType="VARCHAR" property="description"/> <collection property="contentlist" resultMap="Content.content"/> //因为是跨文件所以要namespace.id </resultMap> 特别要注意的是column属性对应数据库表的字段名意思是与select子句选择的字段名匹配起来.如果select u.name as username from User as u; 虽然在数据库表中的字段名是name,但是select子句为name字段设置了别名,即username,因此在<resultMap>标签下的<result>标签的column属性要等于username而并非name,是与select子句中的名称匹配,要注意当设置了别名那么column属性也为别名
    查看全部
  • 如何在xml的配置文件中反应表结构之间的对应关系呢? 在java中,通过主表的实体类中包含子表的集合来反应一对多的关系,在配置文件中同样是通过集合来配置这种关系的。在主表的映射文件中使用<collection>标签来指定子表的对应关系以及子表的引用,使用resultMap属性来指定子表映射关系的文件,格式是namespace.子表对应关系的id。那么新的问题来了,主表中的id与子表中的id,同时映射到结果集resultMap就会产生问题,所以就需要给任意一个id起一个别名。注意:给表起别名,以及字段的引用,打印出的结果是不包含表名的,比如说 a.id,打印出的结果是没有a的,所以a.id与b.id映射的都是一个属性,所以给字段起一个别名,那么字段名就会改变,配置映射文件的时候,注意数据库字段与java实体类的属性的对应关系。
    查看全部

举报

0/150
提交
取消
课程须知
各位小伙伴们需要有一定Java Web开发基础,至少需要掌握以下内容: 1、JSP、Servlet、JSTL、EL 2、JS/JQUERY 3、JDBC 如果你还是新人,建议先移步网站相关课程,在理解并掌握相关知识之后再回来进修
老师告诉你能学到什么?
1、 Mybatis 的下载与配置 2、 Mybatis 的基本功能应用 3、 融合 Mybatis 的一个完整小案例的实战 4、 Mybatis 的特征总结 5、 Mybatis 常见 QA

微信扫码,参与3人拼团

微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!