-
一个指定对应多条不同回复内容<br> 一对多的关系,一般拆分成两张表,这样就减少了冗余数据<br> ①表指令表:主键、name、description<br> ②表指令表对应的内容:主键、内容、指令表的主键(command_id)<br> 这样,一个指定就可以在②表找到所对应的多条内容 两种结构: ——————————①一条指令回复一组内容 ——————————②一条指令回复一组中的一个内容,在java代码中随机回复一条即可 dao层内容: ——————————————————————列表查询 ——————————————————————页面初始化 ——————————————————————微信对话查看全部
-
修改文件名 右击---Refacter---Rename---; 可以将包含此文件名的所有文件都做出修改 快捷键:Alt+Shift+R查看全部
-
如果js中Dom对象的值为 ""、null、undefined、0;则if(Dom对象)为false 点击按钮提交请求,判断字符串不为空的话,执行ajax请求。 ajax复习: url:请求后台的路径 type:提交方式 dataType:数据类型 timeout:超时时间 success:成功后的回调函数,函数中的内容是对服务端传递的数据进行处理。 data:请求参数查看全部
-
mybaits的sql语句查询放在配置文件中,有select,delete,update等标签,id用于区分,resultMap用于映射Java中的类。查询到的类属性与resultMap中的对应。加载配置文件用mappers标签,resource表示路径。查看全部
-
mybaits获取数据库连接 //通过配置文件获取数据库连接信息 Reader reader = Resources.getResourceAsReader("configuration.xml"); //通过配置信息获取sessionFactory SessionFactory sessionFactory = new SessionFactorybuilder().build(reader); //通过sessionFactory创建一个会话 SqlSession sqlSession = sessionFactory.openSession();查看全部
-
jsp常用标签查看全部
-
Ps1: servlet负责接收页面的值和向页面传值。如果有业务逻辑需要处理则调用相应的service; service接收servlet传过来的值,并对其进行处理,做业务的操作,算法等等,如果有需要则调用相应的dao层; dao层完成与数据库的交互,执行相应的SQL语句。 Ps2:basePath后面默认有个“/”。 Ps3: <servlet-mapping><br> <servlet-name>...</servlet-name> <url-pattern>/Servlet.action</url-pattern>//推荐使用这种方式,不推荐使用带“/”方式,因为跳转的时候需要处理。这样一来可以避免这个处理问题。 </servlet-mapping> Ps4:增删改与查询不一样,MyBatis查询默认有事务提交,但增删改需要手动提交事务。sqlSession.commit();查看全部
-
对应关系查看全部
-
应用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:为不同包配不同的级别,把总的覆盖,可看到自己想看的信息查看全部
-
ognl可以直接调用Java类的方法 ognl中的特殊字符需要转义,如"转义为" &转义为&或者写为其特有操作符and 精确查询 and COMMAND=#{command} 即用 #{}代替 ? 模糊查询 and DESCRIPTION like '%' #{description} '%'查看全部
-
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>查看全部
-
1、<mapper namespace="">//namespace属性必须存在不可省略。 如果namespace名不同,则<select id="">的id可以一样,调用的时候,namespace名.id名;若namespace名相同,则id不能一样。 2、<mapper namespace=""><resultMap id=""> //同上... 但是注意:resultMap——id可以与select——id一样(即使namespace相同),只要它们的id在各自领域(resultMap或select)范围内唯一即可。 3、<resultMap>的子标签中,如果是主键栏,用<id>子标签,如果是普通栏,用<result>子标签。 4、<select resultMap="resultMap中的id名">。 5、<mappers>中子标签<mapper>的resource属性也是从src根目录开始算起,“.”改为“/”;如果有多个<mapper>则需添加多个。查看全部
-
Ps1:配置文件的详细路径:src/test/java/org/apache/ibatis/submiited/complex_property/Configuration.xml Ps2:小技巧:粘贴类名,再粘贴对象名,改大小写即可。 Ps3:顺序(从底层往高层):实体类-->Dao-->Service-->Servlet-->页面。 Ps4:数据库服务启动即可,无需登录数据库操作软件。 Ps5:Dao层一般与表(实体类)相关,命名一般在实体类名+“Dao”即可;Service层命名一般与Servlet命名对应。查看全部
-
Model: 数据表对应的模型; DAO:每个表对应一个DAO,对该表的一些操作。 Service:或Logic层,跟Servlet对应,一些相关的业务功能。 Servlet: 设置编码/过滤器;接受页面的值;向页面传值;业务需要调用service;跳转。查看全部
-
@关键代码(技巧): 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。查看全部
举报
0/150
提交
取消