天天看点

mysql读写分离实战准备一

首先准备一个web网站,这里模拟一个网站的页面,主要对开源网页实现动态存取,之后将使用本页面进一步实现对mysql的读写分离功能

前台是开源网页的页面,具体例子可从如下网站下载

<a href="http://www.superslide2.com/">http://www.superslide2.com/</a>

后台采用springboot+thymeleaf开发

复制网站实例页面,到如下路径/template/case1page

  复制静态页面包括js文件到/static

Pom中加入相应jar包依赖,且未方便开发可以加入热部署相关依赖,例如

&lt;build&gt;

         &lt;plugins&gt;

              &lt;plugin&gt;

                   &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;

                   &lt;artifactId&gt;spring-boot-maven-plugin&lt;/artifactId&gt;

                   &lt;dependencies&gt;

                &lt;!-- spring热部署--&gt;

                &lt;dependency&gt;

                    &lt;groupId&gt;org.springframework&lt;/groupId&gt;

                    &lt;artifactId&gt;springloaded&lt;/artifactId&gt;

                    &lt;version&gt;1.2.1.RELEASE&lt;/version&gt;

                &lt;/dependency&gt;

              &lt;/dependencies&gt;

              &lt;/plugin&gt;

         &lt;/plugins&gt;

     &lt;/build&gt;

整合mybatis

在Application中编写设置注入数据源和SqlSessionFactory的方法如下

@Bean

    @ConfigurationProperties(prefix="spring.datasource")

    <b>public</b> DataSource dataSource() {

        <b>return</b> <b>new</b> org.apache.tomcat.jdbc.pool.DataSource();

                 //com.alibaba.druid.pool.DruidDataSource();

    }

主要采用两个表SD_CATEGORY,SD_LABLE_SWITCH,存放对应页面中标题和标题中相关的详细数据。具体建表和数据可见附件脚本

页面中实现了12个demo的动态效果

已第11个demo为例。说明实现方式

1静态页面中数据样式如下

&lt;li class="nLi"&gt;

                                               &lt;h3&gt;&lt;a

href="http://www.SuperSlide2.com" target="_blank"&gt;新闻

                                               &lt;ul

class="sub"&gt;

                                                        &lt;li&gt;&lt;a

href="#"&gt;新闻首页&lt;/li&gt;

href="#"&gt;新闻人物&lt;/li&gt;

href="#"&gt;新闻电视&lt;/li&gt;

href="#"&gt;新闻图片&lt;/li&gt;

href="#"&gt;新闻视频&lt;/li&gt;

href="# "&gt;新闻专题&lt;/li&gt;

                                               &lt;/ul&gt;

                            &lt;/li&gt;

                            &lt;li

class="nLi"&gt;

href="http://www.SuperSlide2.com" target="_blank"&gt;预告片

根据上面数据显示方式确定现在后台存放数据的结构是,用一个对象存放标题和条目数据(List),然后再用一个组列表存放这些对象,已此来对应页面的结构

2页面显示方式如下

&lt;li class="nLi" th:each="list:${grp11List}"&gt;

                            &lt;h3&gt;&lt;a href="http://www.SuperSlide2.com" target="_blank" th:text="${list.TP_NM}"&gt;新闻&lt;/a&gt;&lt;/h3&gt;

                            &lt;ul class="sub"&gt;

                                  &lt;li th:each="lableList:${list.lable}"&gt;

                                    &lt;a href="#"&gt;

                                     &lt;p th:text="${lableList.LAB_NM}"&gt;新闻首页&lt;/p&gt;

                                    &lt;/a&gt;

                                   &lt;/li&gt;

                            &lt;/ul&gt;

                 &lt;/li&gt;

后台存放方式

在处理对应demo实例的controller里组织数据的逻辑如下

//查找标题

      List&lt;GrpTitle&gt; grpTitle = userService.getGrpTitle(caseId);

      //查找每个标题时,找出所有对应lable数据并放入一个grplist

      <b>for</b> (GrpTitle title : grpTitle) {

            List&lt;Lable&gt; lable = userService.getLableInfo(title.getGRP_ID());

            FullContent cont = <b>new</b> FullContent();

            cont.setTP_NM(title.getTP_NM());

            cont.setLable(lable);

            //把所有grplist放到一个list

            grpList.add(cont);

           }

      //加入case1 返回需要的结果

      model.addAttribute("grp11List", grpList);