-
在Dao层中封装了与数据库有关的操作,在service层调用Dao层来处理业务逻辑,在servlet中调用service层中的对象来得到处理的结果,并且返回给页面 servlet的几个功能: 1.接受页面的值 2.向页面传值 3.根据业务需要,调用service 4.跳转页面 Model: 数据表对应的模型; DAO:每个表对应一个DAO,对该表的一些操作。 Service:或Logic层,跟Servlet对应,一些相关的业务功能。 Servlet: 设置编码/过滤器;接受页面的值;向页面传值;业务需要调用service;跳转。查看全部
-
文件在WebRoot目录下就相当于在工程项目下 1.凡是写在WebRoot文件夹中的jsp文件,必须通过后台的servlet才能访问到, 如果只是在地址栏中输入,是无法访问到的 (也就是说我们可以直接不用加Web-Root就可以访问到在此文件夹下的直接文件如:Index.jsp) (以MicroMessage这个项目为例:) 2.jsp中的basePath的值是:http://localhost:8080/MicroMessage/ 3.jsp中的path的值是:/MicroMessage 4.在servlet中: request.getRequestDispatcher("/WEB-INF/jsp/back/list.jsp").forward( request, response); 这里的/代表的是项目的根目录,所以不用加上Web-Root,就像我们访问index.jsp不用加上 Web-Root一样查看全部
-
模糊匹配的字符串拼接用空格拼" '%' ? '%'"查看全部
-
Mybatis之SqlSession查看全部
-
333查看全部
-
222查看全部
-
111查看全部
-
&& = and && =& ""=""查看全部
-
Mybatis OGNL表达式查看全部
-
Mybatis OGNL表达式查看全部
-
mybatis sqlsession查看全部
-
一、获取自增主键值: <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. 浏览器编码问题等。查看全部
-
一、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的方式查看全部
-
快捷键: 1、Ctrl+Shift+R:查看该高亮部分是哪个类。 2、Alt+Shift+R:选择高亮部分修改关联的名称(不要自己手动去改,否则所有都要自己手动去改)。 注意:rs.getString("列名");这里的列名并不指的是数据库中的字段名,而是当时select id ID,...语句当中空格后的命名。如果不写默认是数据库中的字段名,MyBatis中的xml配置column也同理可得。如果一条select中涉及到多个表,如果为select a.id,b.id...由于column不能加前缀,所以只能给其中一个自定义命名,如(select a.id C_ID,b.id...),否则会出现两个一样的id变量名导致报错。查看全部
-
如何在xml的配置文件中反应表结构之间的对应关系呢? 在java中,通过主表的实体类中包含子表的集合来反应一对多的关系,在配置文件中同样是通过集合来配置这种关系的。在主表的映射文件中使用<collection>标签来指定子表的对应关系以及子表的引用,使用resultMap属性来指定子表映射关系的文件,格式是namespace.子表对应关系的id。那么新的问题来了,主表中的id与子表中的id,同时映射到结果集resultMap就会产生问题,所以就需要给任意一个id起一个别名。注意:给表起别名,以及字段的引用,打印出的结果是不包含表名的,比如说 a.id,打印出的结果是没有a的,所以a.id与b.id映射的都是一个属性,所以给字段起一个别名,那么字段名就会改变,配置映射文件的时候,注意数据库字段与java实体类的属性的对应关系。查看全部
举报
0/150
提交
取消