发表于: 2018-02-25 22:05:52

1 598


今天完成:


1,完善MyBatis-Generator,以及返回主键。

2,学习tiles框架。

3,总结提交任务三。


1,昨天的MyBatis-Generator生成的pojo类和mapper接口有一些错误,生成的代码很乱,而且有报错。今天参考网上博客改了一个设置,生成的代码可以运行了。博客地址是:https://www.jianshu.com/p/e09d2370b796

    改动的地方是:
<context id="testTables" defaultModelType="flat" targetRuntime="MyBatis3Simple">
增加了defaultModelType="flat,将targetRuntime="MyBatis3改成了targetRuntime="MyBatis3Simple
defaultModelType="flat”的意思是“所有内容(主键,blob)生成在一个对象中。
targetRuntime="MyBatis3的意思是“生成基于MyBatis3.x以上版本的内容,包括XXXBySample。
targetRuntime="MyBatis3Simple的意思是”类似于MyBatis3,只是不生成XXXBySample。
生成的StudentMapper.xml中的insert方法如下:
<insert id="insert" parameterType="com.byou.pojo.Student">
  <!--
    WARNING - @mbg.generated
    This element is automatically generated by MyBatis Generator, do not modify.
    This element was generated on Sun Feb 25 10:37:57 CST 2018.
  -->
  <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
    SELECT LAST_INSERT_ID()
  </selectKey>
  insert into Student (Name, State, Type, Introduce,
    GoodOrNormal, Images, Create_At,
    Update_At)
  values (#{name,jdbcType=CHAR}, #{state,jdbcType=BIT}, #{type,jdbcType=BIT}, #{introduce,jdbcType=VARCHAR},
    #{goodOrNormal,jdbcType=BIT}, #{images,jdbcType=VARCHAR}, #{create_At,jdbcType=BIGINT},
    #{update_At,jdbcType=BIGINT})
</insert>
发现其中有一个selectKey标签,百度了解到这个标签用来返回刚才插入的数据的主键。
作用是:在实际工程中,数据库中的信息是由主键来唯一确定的,而且主键为了不重复,一般设置为自增主键,这就导致了我们插入一条信息之后,无法获取刚才这条信息的主键。解决办法有三种,今天就学习了selectKey标签这一种方法。StudentMapper.xml中的代码如上方这个代码。在后端取出这个主键的方法如下:
@Autowired
private StudentMapper studentMapper;
@Test
public void testMyBatis() {
    Student student = new Student();
    student.setName("桃根仙");
    student.setState(true);
    student.setType(false);
    student.setIntroduce("123123123123qwdadz");
    student.setGoodOrNormal(true);
    student.setImages("JAVA-7632");
    student.setCreate_At((long) 20180102);
    student.setUpdate_At((long) 20180221);
    int i = studentMapper.insert(student);
    int value2 = student.getId();
    System.out.println(i+"\t"+value2);

}


当使用了插入这个方法之后,student这个类就自动具有了数据库中的主键(即id值),只需要用student.getId()方法取出就可以了。


取出自增主键这个东西写出来很简单,但是用了很长时间才悟出来,网上没有找到说出这个方法的教程。



2,学习tiles框架。看了之前师兄的小课堂,知道tiles框架就是将网页分成四块,head、manu、body和foot。如下图:

每个部分都可以用专门的jsp文件编写。这样的话,大大减少网页设计的重复工作,可以使用继承功能,继承相似的网页,程序猿只需要操作那些不一样的地方。


        使用tiles框架需要有tiles.xml配置文件。



3,总结任务三:

1,执行maven install命令打出war包。在本地使用idea中的maven插件,install可以打出war包,生成在项目文件夹中的target文件夹中。在Linux服务器中,在项目文件夹下使用mvn install命令,打出war包,也生成在项目的target文件夹中。
2,云服务器在之前任务中已经完成。任务三需要做的就是安装nginx以及配置反向代理。见下边的问题。
3,这个步骤就是要求写自动部署脚本,脚本功能比较简单。
4,这一步就是将项目部署到服务器,这一步和步骤三是一起完成的。
5,配置nginx,使用子域访问。安装nginx之前需要先安装一些其他相关工具库,PCRE、zlib、openssl,要求就是尽量安装最新的稳定版。nginx占用的是80端口,如果服务器有其他程序占用了,会导致nginx无法启动。用lsof -i:80命令查看占用80端口的程序。nginx启动之后,查看80端口,会发现除了nginx进程占用了这个端口,AliYunDun阿里云盾也会占用这个端口,但是nginx可以正常运行。
使用子域访问就是反向代理,nginx代理服务器上安装的三个容器(tomcat、jetty和resin),需要配置nginx.conf这个文件。同时这个也可以用来配置负载均衡。
6,查看Nginx日志,编写脚本统计访问次数,统计响应时间。也是需要编写脚本,但是这个脚本需要使用awk命令,而且在之前需要将Nginx日志的格式配置一下,也是在nginx.conf这个文件中配置。
7,查看resin日志,统计访问DB时间,Controller处理时间。在项目中应用AOP打出统计时间的日志,这个日志生成在容器中。通过脚本访问日志,读取出访问时间。

8,使用Top命令查看服务器的运行状态。在服务器中输入Top命令,会出现很多数据,需要知道占用内存大小和CPU占用情况。


明天计划:


完成tiles框架,放到项目中。

完成t10和t11的动态页面。

做完任务四剩下的部分。


遇到的坑:

返回主键如何把值取出来,这个问题困扰了半天,网上教程也没有很详细讲,最后自己搞出来了。我想说是我发明出来的有人信吗?


任务总结:

任务名称:Java=task3
成功连接:
任务耗时:从开始到完成任务三,实际用了十天,其实用了五天在完成任务上,中间过年假期8天,回来之后做了一次任务一到任务三的回顾,这个一共用了五天。延时6天。
技能脑图:
自己的:

官方脑图:

总结
a.任务延期完成。主要是因为想回顾一下之前的任务。把任务一到任务三的主要任务重新做了一个项目。发现了很多之前做任务没有注意到细节,加了一些注释,实现了伪 post表单实现delete方法,将代码写的更加整洁。嗯就这些。
b.任务三的官方脑图与实际任务相比有很多不一样的,需要更新了。感觉任务三已经完成了。
c.这期间完成对任务一到任务三的回顾,感觉踏实了不少。感觉做任务四的时候,更从容了。



返回列表 返回列表
评论

    分享到