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

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

难度中级
时长 4小时30分
学习人数
综合评分9.73
430人评价 查看评价
9.9 内容实用
9.7 简洁易懂
9.6 逻辑清晰
  • Mybatis的OGNL表達式 取值寫法
    查看全部
  • 1、Mybatis中SqlSession的作用; 1、向SQL语句出入参数; 2、执行SQL语句; 3、获取SQL语句执行的结果; 4、事务的控制; 2、如何得到SqlSession? 1、通过配置文件获取数据库连接的相关信息; 2、通过配置信息构建SqlSessionFactory; 3、通过SqlSessionFactory打开数据库会话;
    查看全部
  • Mybatis中保存主表数据之后获取id值添加到javabean对应属性的方法. 因为id是自动增长的,在用Mybatis插入的sql语句中不需要管id这个字段,插入数据之后,javabean实体类中的id属性是没有值的,因此需要在<insert>标签添加useGeneratedKeys="true"属性与keyProperty="javabean的id属性名"属性关联. 那么在插入完数据之后,本来javabean中的id属性是没有值的,但是设置了这个属性之后就会自动根据数据库表自动增长的id值赋值给javabean中的id属性. 或者直接在数据库中插入数据,再从java中通过select查询所有信息也可以.
    查看全部
    0 采集 收起 来源:常见问题解析

    2018-03-22

  • #{}与${}是一样的,写法与来源都一样,都是写在sql语句上. 区别: #{}:有预编译,可防sql注入. ${}:无预编译,直接拼接参数,字符串无单引号. select * from message where command=#{command} select * from message where command='${command}' 两条sql语句都是查询,但是最后Mybatis运行时解析的时候不同. 第一条sql语句解析成: select * from message where command=? ; (预编译,最后Mybatis再为其赋值) 第二条sql语句解析成: select * from message where command='查询'; //假设参数值为查询,即直接赋值 注意: ${}因为不是预编译,当参数是字符串,Mybatis解析时不会加上''号,它会直接赋值,所以需要在sql语句上自己加上单引号,即'${command}',否则就会出错. #{}与ognl表达式取值写法是相同的.
    查看全部
  • 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>标签.
    查看全部
  • Mybatis常用标签归纳
    查看全部
    0 采集 收起 来源:常用标签

    2016-02-01

  • Sql配置文档的其他常用标签 <choose>标签,有<when test="">和<otherwise>子标签. 相当于if(){}if(){} else{}语句 <select > select * from message <choose> <when test=""></when> <when test=""></when> <otherwise></otherwise> </choose> </select>
    查看全部
    0 采集 收起 来源:常用标签

    2018-03-22

  • Sql配置文档的其他常用标签 <set>标签,与<where>标签同级.<set>标签其实就是代替<where>标签的where关键字.也经常与<if>标签配合使用,会自动添加逗号,功能与<wherer>标签相似. <update id="updateset" parameterType="com.imooc.Message"> update message <set> <if test="command!=null"> command=#{command} </if> <if test="description!=null"> description=#{description} </if> </set> </update>
    查看全部
    0 采集 收起 来源:常用标签

    2018-03-22

  • Sql配置文档的其他常用标签 <sql>标签,此标签与<select>、<update>这些标签同一个级别. <sql>标签与java中的常量定义一个意思.即可以把经常用到的一些sql语句把它放在<sql>标签下,在<sql>标签下添加id属性.在要用到<sql>标签的位置添加<include refid="sql标签的id值">标签即可. <select id="find" resultMap="resultMap"> select <include refid="sql1"> from message </select> <sql id="sql1">command,description,content</sql> 一般<sql>标签存的是列名,因为在要插入数据或者查询数据时直接引用sql常量会比较方便.
    查看全部
    0 采集 收起 来源:常用标签

    2018-03-22

  • Sql配置文档的其他常用标签 <where>标签,一般与<if>标签一起使用. 用了where关键字就不用再Sql语句后面加where 1=1来拼接,<where>标签会帮我们补上where关键字,假如<where>标签下的<if>条件都不满足,<where>标签与不会为我们添加where关键字. 当<where>标签下的<if>条件满足多个时,拼接语句添加" and command=#{command}",因为用了<where>标签,它会把where关键字之后的第一个and关键字出掉.即会变成一条符合规范的sql语句. <select id="find" resultMap="resultMap"> select * from Message <where> <if test="command!=null"> and comand =#{command} </if> <if test="description!=null"> and description =#{descrtiption} </if> </where> </select>
    查看全部
    0 采集 收起 来源:常用标签

    2018-03-22

  • 在子表类的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>
    查看全部
  • 在主表类的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属性也为别名
    查看全部
  • Mybatis实现一对多的关系配置 (之前的例子是指令与回复内容一对一的关系) 指令与回复内容之间有一对多的关系.把指令所在的表称为主表,回复内容所在的表称为子表.在代码中也需要对应两个实体类.且都有各自的Sql配置文件. public class Command{ private int id; private String name; private String description; private List<Content> contentlist; 对应的set/get()方法 } public class Content{ private int id; private String content; private int commandId; private Command command; 对应的set/get()方法 } 在主表的实体类中除了要对应数据库表字段的属性,还要有一个子表的集合属性,与Hibernate相似,不仅能用Set集合,还可以用List集合.有了这个集合才能反映出一对多的关系. 在子表的实体类中也要有一个主表类类型的属性来存放此Content对象对应的主表类的信息. 有了关联就要可以在各自Sql配置文档配置sql语句,在Mybatis中可以直接用sql语句进行多表的连接. (主表类的Sql配置文件) <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> (子表类的Sql配置文件) <select id="getMessageCon" resultMap="resultMapCon"> select b.id,b.content,a.id as cid,a.name,a.description from content as b left join command as a on b.commandid=a.id </select>
    查看全部
  • 在js的if()语句内 如果有 var command="" //空字符串 command=null; command=undefinded; content=0 //数字0 那么在if(command)语句里判断都是返回false的.
    查看全部

举报

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
您的移动学习伙伴

公众号

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

友情提示:

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