-
Ps1:a href="#" 这个在html中有什么作用?跳转到本页面顶部,一般建议写成javascript:void(0);要好一点,点了一点反应都没有,写#点了会跳一下的。 Ps2:servlet拿到什么数据类型就什么类型,至于service不一致时,再service里面去修改,这也是service作用之一。 Ps3:MyEclipse对JS等文件报错处理:http://jingyan.baidu.com/article/ca41422fe094251eae99ede7.html Ps4: /** * 调用后台批量删除方法 */ function deleteBatch(basePath){ $("#mainForm").attr("action",basePath+"DeleteBatchServlet.action"); $("#mainForm").submit(); } 解析:将id为mainForm的表单的action提交路径改为basePath+"DeleteBatchServlet.action"这个并且执行submit提交表单! Connection为何不需要commit();因为conn.setAutoCommit(true);设置为自动提交,而我们MyBatis把它封装后,setAutoCommit(false);所以需要手动提交事务。Connection为何不需要commit();因为conn.setAutoCommit(true);设置为自动提交,而我们MyBatis把它封装后,setAutoCommit(false);所以需要手动提交事务。查看全部
-
Ps1:顺序(从高层到底层):servlet负责接收页面的值和向页面传值。如果有业务逻辑需要处理则调用相应的service。service接收servlet传过来的值,并对其进行处理,做业务的操作,算法等等,如果有需要则调用相应的dao层。dao层完成与数据库的交互,执行相应的SQL语句。 Ps2:basePath后面默认有个“/”。 Ps3: <servlet-mapping> <servlet-name>...</servlet-name> <url-pattern>/Servlet.action</url-pattern>//推荐使用这种方式,不推荐使用带“/”方式,因为跳转的时候需要处理。这样一来可以避免这个处理问题。 </servlet-mapping> Ps4:增删改与查询不一样,MyBatis查询默认有事务提交,但增删改需要手动提交事务。查看全部
-
应用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:为不同包配不同的级别,把总的覆盖,可看到自己想看的信息查看全部
-
//通过配置文件获取数据库连接信息 Reader reader=Resources.getResourceAsReaser("config/Configuration.xml"); //通过配置信息构建一个sqlSessinfactory SqlSessionFactory sqlSessionFactory=new SqlSessionfactoryBuilder(reader); //通过sqlSessionFactory打开一个数据库回话 SqlSession sqlsession=sqlSessionFactory.openSession();查看全部
-
ognl可以直接调用Java类的方法 ognl中的特殊字符需要转义,如"转义为" &转义为&或者写为其特有操作符and 精确查询 and COMMAND=#{command} 即用 #{}代替 ? 模糊查询 and DESCRIPTION like '%' #{description} '%'查看全部
-
OGNL表达式查看全部
-
OGNL表达式查看全部
-
1.在核心配置文件中指定要执行的sql配置文件的路径,使用<mappers>,可以添加多个sql映射文件,指定资源时,使用resource属性指定资源路径即可,这样程序会自动读取sql配置文件,并创建sqlSessionFactory。 2.配置messege.xml查询数据库(sql配置文件),如图: 执行sqlSession.selectList()方法时,通过配置文件中的select标签找到sql语句,执行数据库的查询,返回的结果通过select标签中resultMap这样的一个属性,去查找resultMap标签,然后按照resultMap中的标签中的配置完成java属性与数据库字段的对应。 mybatis的sql语句通过xml文件进行配置 sql的配置文件中的<mapper>标签的namespace要唯一,调用sql语句,eg:sqlSession.selectList("Messages.list");//namespace的名字点上语句的ID <resultMap type="" id="Message">//映射的是封装返回结果的bean,type是bean的全类名,id要唯一(resultMap中) <id column="ID" jdbcType="VARCHAR" property="id"/> //主键使用,column对应的是数据的字段名,jdbcType对应的是数据字段的类型,property对应的是实体的属性名 <result /> //其他字段使用 </resultMap> 查询语句: <select id="list" resultMap="Message">sql语句</select> 写好的sql配置文件,可在mybatis的连接配置文件中引入: <mappers> <mapper resource="sql配置文件路径" /> </mappers>查看全部
-
Ps1:配置文件的详细路径:src/test/java/org/apache/ibatis/submiited/complex_property/Configuration.xml Ps2:小技巧:粘贴类名,再粘贴对象名,改大小写即可。 Ps3:顺序(从底层往高层):实体类-->Dao-->Service-->Servlet-->页面。 Ps4:数据库服务启动即可,无需登录数据库操作软件。 Ps5:Dao层一般与表(实体类)相关,命名一般在实体类名+“Dao”即可;Service层命名一般与Servlet命名对应。 //通过配置文件获取数据库连接信息 Reader reader = Resources.getResourceAsReader("config/Configuration.xml"); //通过配置信息构建一个SqlSessionFactory SqlSessionFactory sqlSessionFactory = new SqlSessioFactoryBuilder.build(reader); //通过sqlSessionFactory打开一个数据库会话 SqlSession sqlSession = sqlSeesionFactory.openSession();查看全部
-
AIT+SHIFT+J:自动添加类的文档注释 CTRI+SHIFT+Y:大写转小写 CTRI+SHIFT+X:小写转大写查看全部
-
Model: 数据表对应的模型; DAO:每个表对应一个DAO,对该表的一些操作。 Service:或Logic层,跟Servlet对应,一些相关的业务功能。 Servlet: 设置编码/过滤器;接受页面的值;向页面传值;业务需要调用service;跳转。查看全部
-
@关键代码(技巧): StringBuilder sql=new StringBuilder("select ID,COMMAND,DESCRIPTION,CONTENT from menssage wherr1=1"); List<String>paramList=new ArrayList<String>(); if(command!==null&&!"".equals(sommand,trim())){ sql.append("and COMMAND=?"); paramList.sdd(command); } if(description!=null&&"".equals(description.trim())){ sql.append("and DESCRIPTION like'%'?'%')//mysql语法:%空格?空格% paramList.add(sexcription); } perpaergStatement pstmt=conn.prepareStatement(sql.toString()); for(int i=0;i<paramList.size();i++){ pstmt.setString(i+1,paramList.get(i)); } ResultSet rs=pstmt.executeQuery(); 注意1:preparedStatement 语句要在sql语句还没有准好后面,但要在循环前面, 注意2:为何不直接在if语句后面写“?”的内容了。因为不知道问号序号是多少,不好控制 ps1 tomcat启动一般用Debug.只要不要设置断点,。效果与run是一样的,这样一来,如果想调试就设置断点即可,不需要在切换Debug模式(ps:Debug模式下,修改java代码会自动上传到服务器,不需要重新启动toncat) pa2:sql=“”;//这样写不好,因为原来的字符串占用内存还在,推荐使用StringBuffer,StringBuilder.查看全部
-
@关键代码(技巧): StringBuilder sql=new StringBuilder(" select ID,COMMAND,DESCRIPTION,CONTENT from message where 1=1 "); List<String> paramList=new ArrayList<String>(); if(command!=null&&!"".equals(command.trim())){ sql.append(" and COMMAND=? "); paramList.add(command); } if(description!=null&&!"".equals(description.trim())){ sql.append(" and DESCRIPTION like '%' ? '%' ");//MySql语法:'%'空格?空格'%' paramList.add(description); } PreparedStatement pstmt=conn.prepareStatement(sql.toString()); for(int i=0;i<paramList.size();i++){ pstmt.setString(i+1,paramList.get(i)); } ResultSet rs=pstmt.executeQuery(); 注意1:PreparedStatement语句要在sql语句还没准备好后面,但要在循环前面。 注意2:为何不直接在if语句后写“?”的内容呢?因为不知道问号序号是多少,不好控制。 Ps1:Tomcat启动一般用Debug,只要不要设置断点,效果与Run是一样的,这样一来,如果想调试就设置断点即可,不需要再切换到Debug模式(Ps:Debug模式下,修改Java代码会自动上传到服务器,无需重新启动Tomcat) Ps2:sql+="";//这样写不好,因为原来的字符串占用内存还在,推荐使用StringBuffer、StringBuilder。查看全部
-
1.载入JSTL中的c标签:<%@ taglib prefix="c" uri="http://java.sum.com/jsp/jstl/core" %> 2.利用c标签来进行foreach循环和if判断 <c:forEach items="${messageList}" var="message" varStatus="status"> <tr <c:if test="${status.index % 2 != 0}">style='background-color:#ECF6EE;'</c:if>> <td><input type="checkbox" name="id" value="${message.id}"/></td> <td>${status.index + 1}</td> <td>${message.command}</td> <td>${message.description}</td> <td> </c:forEach>查看全部
-
不要写select*要直接写列名提高查询效率查看全部
举报
0/150
提交
取消