-
mybatis常用标签查看全部
-
常见问题解析 一、获取自增主键值: <insert id="insert" useGeneratedKeys="true" keyProperty="id" parameterType="com.imooc.bean.Command"> insert into command(name,description) values(#{name},#{description}) </insert> //解析:添加数据(在主外键的关系中)可以使用 useGeneratedKeys="true",可获取自增长的id,并配合keyProperty="id"(java中实体类的属性名)指定该对象的主键值。 二、找不到namespace.id的异常效果: 1、在Configuration.xml没有配置<mappers><mapper resource="*.xml"></mapper></mappers>; 2、在1的配置中或selectList("Message.queryMessageList",message);中,名字写错。 三、排查SQL语法错误:如果控制台出现SQL语句问题,复制到SQL软件上执行,若有参数,手动写上并执行。 四、不要过度使用${}。 五、乱码问题: 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" /> 6. 浏览器编码问题等。查看全部
-
这个insert语句传到数据库时 插入了数据 但是 id是没有值得 需要使用keyProperty=“id” id为Command 实体类的属性 这样command对象在传入时是没有值得 执行时就有值了查看全部
-
insert时 useGeneratedKeys=“true”表示 主键是自增主键 而不是自己指定的主键值查看全部
-
一、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常用标签:全部都是用在xml配置文件 **collection标签是一对多,在“一”的xml对“多”的集合的引用 **association标签是多对一,在“多”的xml对“一”的对象的引用查看全部
-
xml中如何反应一对多的关系? 主表里面包含子表的集合。 <conlection property="contentList" resultMap="CommandContent.Content"/> <result column="Description" jdbcType="VARCHAR" property="descrition"/> colunmn属性的值:表示数据库这边的列名 【但不是指的数据库中的列名,而是查询出来的结果集的列名】 【只要column属性有别名,那么相对应的xml配置文件中的column列的值也要带上别名。但!!!不包括前缀,例:a.ID test ,相对应的column属性值是test】 ------------------------------------------------------------------ 当两个表中有相同列名时,这时候不光要取前缀名, 更重要的是给两个列都取别名!!!程序才能区分哪个列 ----------------------------------------------------------------- property属性的值:表示对应的实体类中的字段 ------------------------------------------------ left join 无论子表有没有内容,主表都应该显示出来查看全部
-
如果js中Dom对象的值为 ""、null、undefined、0;则if(Dom对象)为false 点击按钮提交请求,判断字符串不为空的话,执行ajax请求。 ajax复习: url:请求后台的路径 type:提交方式 dataType:数据类型 timeout:超时时间 success:成功后的回调函数,函数中的内容是对服务端传递的数据进行处理。 data:请求参数查看全部
-
知识点: 1.Connection为何不需要commit();因为conn.setAutoCommit(true);默认设置为自动提交,而myBatis把它封装后,setAutoCommit(false);所以需要手动提交事务。 2.批量删除的mapper.xml写法,separator是分割的意思: <delete id="deleteBatch" parameterType="java.util.List"> delete from message where ID in( <foreach collection="list" item="item" separator=","> #{item} </foreach> ) </delete> 3. /** * 调用后台批量删除方法 */ function deleteBatch(basePath){ $("#mainForm").attr("action",basePath+"DeleteBatchServlet.action"); $("#mainForm").submit(); } 解析:将id为mainForm的表单的action提交路径改为basePath+"DeleteBatchServlet.action"这个并且执行submit提交表单! 4.servlet只负责接受来自页面的数据,不对其进行任何处理与转换。查看全部
-
1.servlet负责接收页面的值和向页面传值。如果有业务逻辑需要处理则调用相应的service。service接收servlet传过来的值,并对其进行处理,做业务的操作,算法等等,如果有需要则调用相应的dao层。dao层完成与数据库的交互,执行相应的SQL语句。 2.增删改默认按事务处理,Mybatis对事务的控制,默认是不自动提交的,需要手动提交 sqlSession.commit();查看全部
-
log4j.properties详解: 应用log4j(日志)调试动态SQL: 1、jar包和配置文件 2、log4j.properties <1>log4j.rootLogger=DEBUG,Console:输出级别(级别<由低到高>debug/info/warn/error)和输出位置(控制台) <2>log4j.appender.Console=org.apache.log4j.ConsoleAppender:配置这个类才会输出在控制台(可在别处) <3>log4j.appender.layout=org.apache.log4j.PatternLayout:布局(按照自己的想法去输出)<4>log4j.appender.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n: %d:产生日志的时间 [%t]:产生日志所处线程的线程名称 %-5p:输出日志的级别、 "5":代表输出的字符会占5位字符,不足则会用空格补齐; "-":指的是补齐的空格在右边,没有则在左边. [%c]:指输出这个日志时处于的那个类的全名,包括包名 %m:输出的时候附加的信息 %n输出换行 <5>log4j.logger.org.apache=INFO:为不同包配不同的级别,把总的覆盖,可看到自己想看的信息 log4j配置详解 一、log4j.rootLogger=INFO, stdout, R 第一个参数为等级,后面可跟一到多个参数,为输出的位置; 例句的意思为将等级为INFO的日志信息使用stdout和R进行输出,stdout和R可以自己命名; 等级可分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL,OFF是关闭,不输出任何信息,其他级别按这个顺序依次降低,如果 指定一个级别,如INFO,则比该级别高的信息都会输出查看全部
-
xml 或者是 HTML中 有转义的方法 xml中 &是不能直接使用的 必须要转义, 1、按照HTML的转法 & -> & " -> " 2、还可以用mybatis中的ognl的表达式中自己的操作符 && -> and 3.在xml配置文件中SQL语句的拼接: 3.1<if test="command!=null and !"".equals(command.trim())"> and COMMAND=#{command}</if> 3.2<if test="description!=null and !"".equals(description.trim())"> and description like '%' #{description} '%'</if>注意'%' #{description} '%'一定要有空格查看全部
-
Mybatis中的OGNL表达式: mod:取余 in:判断一个值是否在一个集合中查看全部
-
Mybatis中的OGNL表达式: Map中的_parameter.key 简写为 key foreach标签不属于 OGNL查看全部
-
sqlsession调用 方法来执行 sql语句 只是输入了select标签的名字,但是并没有输入sql配置文件的uri,所以要在数据库连接的核心配置文件中 导入 sql配置文件,即<mappers>标签与子标签<mapper> sqlsession调用时会用到这个名字 resultmap属性。对应的是resultmap标签的id mybatis配置文件中的mapper标签 属性是namespace 翻译是命名空间 mapper标签内包含 resultmap标签 是执行完查询语句后返回的结果集 resultmap有子标签 id。 用来配置 有主键约束的行 和result。 用来配置其他行 并列关系 ,都有属性column jdbctype property属性 column看名字 就是数据库的字段名 properry 是数据库对应dao类中的属性 select标签 insert标签 update标签。这些标签里写的都是sql语句 resultMap 中id是标识,是唯一的。resultMap中的子标签中的id表示后台数据库的主键,而result对应得实后台数据库除了主键以外的其他字段。查看全部
举报
0/150
提交
取消