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

通过自动回复机器人学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下载
官方微信
友情提示:

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