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

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

难度中级
时长 4小时30分
学习人数
综合评分9.73
430人评价 查看评价
9.9 内容实用
9.7 简洁易懂
9.6 逻辑清晰
  • 删除多条数据的方法 在Sql配置文档中添加 <delete id="deleteMore" parameterType="java.util.List" > delete from message where id in( <foreach collection="list" item="item" separator=","> #{item} </foreach> ) </delete> 其中<foreach>标签中有separator属性用来指明分割的符号.如果不指明的话就要手动添加逗号,拼接sql的时候就会出错. 即#{item},#{item},#{item}, 最后会多出一个逗号,如果设置了separator="," 那么Mybatis就会自动为我们分割,不需要额外添加逗号,直接#{item},最终会变成#{item},#{item},#{item} public void deleteMore(List<Integer> list){ SqlSession sqlSession=Util.getSqlSession(); sqlSession.delete("deleteMore",list); sqlSession.commit(); sqlSession.close(); }
    查看全部
  • 执行删除功能 在Sql的配置文档需要添加 <delete id="deletemessage" parameterType="int" > delect from message where id =#{_parameter} //#{}括号里符合OGNL写法,因为是基本数据类型所以是_parameter </delete> 只有<select>标签需要添加resultMap属性来指定关联映射. 根据id编号来删除单条数据 public void deletemessage(int id){ SqlSession sqlSession=Util.getSqlSession(); sqlSession.delete("deletemessage",id); sqlSession.commit(); //提交事务 sqlSession.close(); } 在Mybatis的增删改中都需要提交事务.MyBatis有事务控制的能力,默认会创建事务但不会自动提交,因此需要用SqlSession的commit()方法提交.且用完SqlSession需要关闭.在JDBC是会自动创建与提交事务. servlet负责接收页面的值和向页面传值.如果有业务逻辑需要处理则调用相应的service层的方法.service层中的方法参数来接收servlet传过来的值,并对其进行处理,如果有需要则调用相应的dao层.dao层完成与数据库的交互,执行相应的SQL语句.
    查看全部
  • Mybatis使用方法
    查看全部
  • log4j.rootLogger配置的第二个值是输出日志的信息要显示的位置.通常输出在控制台或者文件中.并不是因为单词为Console就会输出到控制台,输出到哪是由 org.apache.log4j.ConsoleAppender这个类控制的,只要配置了这个类就能够输出到控制台.如果要输出到文件就要配其他的类. 且rootLogger配置的第二个值是自定义的,只是个名称.即可以是Console也可以是一个字母a.只要这个值与appender后面的单词一样即可. log4j.appender.Console.layout配置的是输出日志的布局形式.org.apache.log4j.PatternLayout是一种自定义的布局形式.需要与log4j.appender.Console.layout.ConversionPattern一起使用,ConversionPattern是配置自定义输出内容的布局的形式. %开头是有特殊意义的 %d表示产生日志的时间 %t表示产生这个日志所处于的那个线程的名称 %p表示输出日志的级别即会显示debug、info的字样 %c表示输出日志时这条输出语句所处于的类的全名 %m表示输出日志的时候附加的信息.即log.debug(mes)中的mes信息. %n表示换行. log4j.logger配置的是自定义包下的输出级别.在log4j.logger后面可以跟任何一个包名.来规定此包下的类的日志输出级别. log4j.rootLogger配置的那个输出级别是对应整个工程的,如果想要在某个包下用别的输出级别则可以通过log4j.logger.自定义包名="输出级别"设置.
    查看全部
  • properties文件(.properties)里面都是key=value的形式.当需要用到properties文件的时候,程序里会通过key值来取到对应的value值. Mybatis已经封装好对log4j操作的接口,因此会自动操作log4j输出日志信息. log4j.properties文件就是为log4j准备的. (log4j.properties文件的内容): log4j.rootLogger=debug,Console log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.layout=org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern=%5p [%t] - %m%n log4j.logger.org.apache=INFO 其中log4j.rootLogger配置的是当使用log4j输出日志的时候输出的级别以及输出的位置,因此有两个值,用逗号隔开. Logger log; log.debug(mes); //输出日志信息的不同形式 log.info(mes); log.warn(mes); log.error(mes); 即输出的级别有debug、info、warn、error等.级别由低到高. 当log4j.rootLogger配置输出日志信息的级别是debug时,则可以输出通过大于等于debug形式输出的信息.当配置为info时,则可以输出通过大于等于info形式输出的信息,此时便不会输出通过debug形式输出的信息.rootLogger的输出级别一定要配置为debug,因为Mybatis封装好的log4j方法中都是以debug的形式输出.
    查看全部
  • 因为动态Sql语句是在SQL配置文档里面,运行时我们并不知道是传递了哪些参数以及内部发生了什么变化. 可以用log4j调试动态SQL,Log4j是Apache的一个开源项目,通过使用Log4j可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等.我们也可以控制每一条日志的输出格式,通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程.日志是日记中的一种,多指非个人的,一般是记载每天所做的工作. Mybatis支持log4j,我们只需把log4j的jar包导入到项目以及完成log4j的配置文件即可.Mybatis就可以通过log4j把Mybatis执行的sql语句打印出来. log4j的配置文档在Mybatis的源码包有,路径-->E:\Mybatis\mybatis-3-mybatis-3.2.8\src\test\java\log4j.properties 把配置文件加载在src下.
    查看全部
  • OGNL表达式语言可以直接调用JAVA对象的方法. <if text="command!=null and ! &quot;&quot;.equals(command.trim())"> 除了属性值那个""双引号之外,因为在XML中非属性值的双引号需要用转译字符,与HTML相同,即&quot;&quot; 在xml中不能直接使用&&(与)这个操作符,必须要转译字符,即&amp;&amp;或者直接用OGNL自己的and操作符,在XML中是支持的. 使用#{变量名}来为sql传递参数.变量名与OGNL的写法一样,但不是OGNL表达式.(自定义类型->属性名,数组->array[index]) 即: <select parameterType="com.imooc.Message" id="find"> select * from Message where 1=1 <if text="command!=null and ! &quot;&quot;.equals(command.trim())"> and command=#{command} </if> </select> MyBatis中可以使用OGNL的地方有两处: •动态SQL表达式中 •${param}参数中 上面代码中test的值会使用OGNL计算结果。
    查看全部
  • 在OGNL中经常需要用到操作符来进行判断. 即在<if text="">标签的text属性值中就经常要用到操作符来进行判断. 在GONL中支持JAVA的常用操作符,以及会有自己特有的操作符.
    查看全部
  • 从集合(包括数组、list、Map)类型中取出一条数据. 即假如parameterType="集合类型",那么怎样通过<if text="">标签取出集合中的一条数据来进行判断. 如果parameterType="String或基本数据类型的数组",则在<if text="array[索引](String[])"> //根据索引获取数组中的一个元素. 如果parameterType="自定义类型的数组",则在<if text="array[索引].属性名(Message[])"> //根据索引获取数组中的一个对象的一个属性. 如果parameterType="List<String>"类型,则在<if text="list[索引](List<String>)"> 如果parameterType="List<Message>"集合泛型是自定义类型,则在<if text="list[索引].属性名(List<Message>)"> 如果parameterType="Map<String,String>"类型,则在<if text="_parameter.key(Map<String,String>)"> //其中_parameter在Map中是可以省略不写的. 如果parameterType="Map<String,Message>"类型,则在<if text="key.属性名(Map<String,Message>)"> 像list与Array中需要提供一个索引来获取值,一般我们不知道明确的索引位置.但通常会明确知道Map集中的key值.这种写法用在Map较多. 在项目中经常用<foreach>标签取出list与Array集合中的每一条数据.此标签不需要用OGNL表达式.foreach标签可以用在数组、List与Map中. <foreach collection="array" index="i" item="item"> 其中collection属性是指向一个完整的集合.可以是array(数组)、list(List集)、_parameter(Map集) index属性在数组与List集合中是索引(下标),在Map中是key值. item属性就是遍历当中的具体某个属性.在Map中指的是value.如果item是自定义类型,那么就是item.属性名
    查看全部
  • 把方法的参数传递给Sql配置文件,SqlSession对象提供两个参数的select()、update()等方法,第一个参数是对应的sql语句的id属性值,第二个为传给Mybatis的参数.但一次只能传一个参数,所以当有多个参数的时候,可以把参数封装在一个javabean的对象中,因为javabean会对应表的字段.要传递的参数值会跟javabean的属性匹配. public List<Message> getMessage(String command,String description){ List<Message> list=new ArrayList<Message>(); SqlSession sqlSession=Util.getSqlSession(); Message m=new Message(); m.setCommand(command); m.setDescription(description); list=sqlSession.selectList("find",m); return list; } Sql配置文件接收参数的方法是在对应sql语句的标签上加上parameterType属性. 属性值就是传递过来参数的数据类型. <select id="find" parameterType="com.imooc.Message" resultMap="result1"> select * from Message where 1=1 <if test="command!=null"> and command=#{command} </if> </select> 其中在<if test="">标签下,属性值是用OGNL表达式来写的. 如果传过来的参数的类型是String以及基本数据类型,那么标签中的OGNL表达式写法就必须是_parameter.如果传过来的参数是自定义类型.即本笔记例子,则直接用属性名(command)即可. 不同的parameterType=""参数类型在OGNL表达式中会有不同的写法.
    查看全部
  • 动态 SQL MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦。拼接的时候要确保不能忘了必要的空格,还要注意省掉列名列表最后的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。 通常使用动态 SQL 不可能是独立的一部分,MyBatis 当然使用一种强大的动态 SQL 语言来改进这种情形,这种语言可以被用在任意的 SQL 映射语句中。 动态 SQL 元素和使用 JSTL 或其他类似基于 XML 的文本处理器相似。在 MyBatis 之前的版本中,有很多的元素需要来了解。MyBatis 3 大大提升了它们,现在用不到原先一半的元素就可以了。MyBatis 采用功能强大的基于 OGNL 的表达式来消除其他元素。 动态 SQL 通常要做的事情是有条件地包含 where 子句的一部分,与<if test="">标签配合使用。比如: <select id="find" parameterType="Blog" resultType="Blog"> SELECT * FROM BLOG WHERE state = ‘ACTIVE’ <if test="title != null"> AND title like #{title} </if> </select> 这条语句提供了一个可选的文本查找类型的功能。如果没有传入“title”,那么所有处于“ACTIVE”状态的BLOG都会返回;反之若传入了“title”,那么就会把模糊查找“title”内容的BLOG结果返回(就这个例子而言,细心的读者会发现其中的参数值是可以包含一些掩码或通配符的)。
    查看全部
  • 一个完整的Sql配置文件: <mapper namespace="User"> <resultMap type="UserAlias" id="UserResult"> <id column="id" jdbcType="INTEGER" property="id"/> <result column="username" jdbcType="VARCHAR" property="username"/> <result column="password" jdbcType="VARCHAR" property="password.encrypted"/> <result column="administrator" jdbcType="BOOLEAN" property="administrator"/> </resultMap> <select id="find" parameterType="long" resultMap="UserResult"> SELECT * FROM user WHERE id = #{id:INTEGER} </select> <delete id="delete" parameterType="UserAlias"> DELETE FROM user WHERE id = #{id:INTEGER} </delete> <insert id="insert" parameterType="UserAlias" useGeneratedKeys="false"> .....//省略 </insert> <update id="update" parameterType="UserAlias"> UPDATE user SET username = #{username,jdbcType=VARCHAR}, password = #{password.encrypted,jdbcType=VARCHAR}, administrator = #{administrator,jdbcType=BOOLEAN} WHERE id = #{id,jdbcType=INTEGER} </update> </mapper>
    查看全部
  • 当配置好Sql配置文件,最后要在主配置文件configuration.xml中的<mappers>标签下的<mapper>子标签的resource属性来指明要关联的Sql配置文件.一个<mappers>标签下可以有多个<mapper>标签,即一个configuration配置文件可以关联多个Sql配置文件. <mappers> <mapper resource="com/imooc/config/User.xml"/> </mappers>
    查看全部
  • Sql配置文档中会有<resultMap>标签,用来配置数据库表字段与javabean属性的关联. <resultMap type="UserAlias" id="UserResult"> <id column="id" jdbcType="INTEGER" property="id"></id> <result column="username" jdbcType="VARCHAR" property="username"></result> <result column="password" jdbcType="VARCHAR" property="password.encrypted"></result> <result column="administrator" jdbcType="BOOLEAN" property="administrator"></result> </resultMap> 其中<resultMap>标签有type、id属性.type属性指定对应的javabean,id属性就是标识符. 在<resultMap>标签下有<id>与<result>子标签,<id>标签对应数据库表的主键.普通的字段则用<result>标签,它们都有column、jdbcType、property属性.column属性对应数据库表的字段名,jdbcType属性对应该字段名的数据库中的数据类型.(即java.sql.Types下的属性名int对应Integer),property属性对应javabean的属性名. <select>标签有resultMap属性,属性值与<resultMap>中的id属性的属性值一样.resultMap属性用来指定此sql语句将在此resultMap中寻找映射关系. <select id="find" resultMap="UserResult"> select * from user where 1=1; </select>
    查看全部
  • 创建Sql配置文件 可以在mybatis-3-mybatis-3.2.8\src\test\java\org\apache\ibatis\submitted\complex_property下的User.xml.把Sql配置文件直接放在src下即可. Sql配置文件的作用是配置Sql语句提供给SqlSession,让它能读到并且执行.可以让一个javabean对应一个Sql配置文件.Sql配置文件里面有很多<select>、<update>、<insert>、<delete>标签,都有一个id属性.标签之间会有对应的sql语句. 在多个Sql配置文件之间标签的id属性属性值都不可以重复.但是在不同Sql配置文件中都有<mapper namespace="">标签,如果多个Sql配置文件的namespace属性值都不同,那么这多个Sql配置文件之间可以出现标签的id属性值重复. 在同一个Sql文件中的同一个域中不能出现两个相同的id. Sql配置文件<mapper>标签一定要存在namespace属性,否则会加载错误. SqlSession对象的select()、selectList()、delete()、insert()、udpate()方法可以执行Sql配置文件中标签下的sql语句,参数都是在Sql配置文件中标签的id属性的属性值.如果不同sql配置文件的<mapper namespace="">标签的namespace属性值都不一样,则可能会出现相同的id属性值的标签.因此在调用方法的参数中应该加上namespace前缀,即select("namespace.id"); 其中selectList()是查询返回一个集合.select()是查询一条记录返回一个对象.
    查看全部

举报

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

公众号

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

友情提示:

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