发表于: 2017-11-15 13:11:53
2 700
今天完成的事
【结局了昨天的bug】
这个报错提示我com.xiuzhen.dao.TaskDao没有注入进去,但是我在service层
我就一直以为是文件注入的问题。
DI依赖注入我记得是必须要有实现类。但是这个是个借口,就一直围绕着依赖注入失败来查找原因。
经师兄指点少写了一个配置文件。
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 给出要扫描的包的地址-->
<property name="basePackage" value="com.xiuzhen.dao"/>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>
这个bean标签是做什么用的呢。(还是当时任务一没有吃透挖下的坑。
这是一个spring的动态代理。
其实和我想的也差不多。。。感觉。
看一下这个东西的源码。
这里面有一个。
很熟悉。。。因为这是MapperFactoryBean的功能。
TaskDao是我们的一个接口,直接通过spring的注入这个bean。然后就可以直接使用了,spring内部会创建一个这个接口的动态代理。
然后再来测试就可以跑通了。
关于在学和工作。
只要给在学做个状态1,工作做个状态0就好了。
读取到所有状态为1的学院采用sql语句。
至此把所有需要变为动态的搞定啦。
贴一下完整的controller层。
@Controller
public class TaskController{
private Logger logger=Logger.getLogger(TaskController.class);
@Resource
private FeatureService featureService;
@Resource
private ProfessionService professionService;
@Resource
private StudentService studentService;
private Integer study;
private Integer work;
//遍历所有Feature
@RequestMapping(value = "/index",method = RequestMethod.GET)
public String ListFeature(Model model){
//修真院特色
List<Feature> features=featureService.getAll();
model.addAttribute("features",features);
logger.info("加载修真院特色。。。");
//优秀学员
List<Student> students=studentService.getAll();
model.addAttribute("students",students);
logger.info("加载优秀学员。。。");
study=studentService.getStudy();
model.addAttribute("study",study);
work=studentService.getWork();
model.addAttribute("work",work);
return "cs10";
}
@RequestMapping(value = "/profession",method = RequestMethod.GET)
public String ListProfession(Model model){
//职业划分,后端在数据库为1,前端在数据库为2,移动开发在数据库为3
List<Profession> professions=professionService.getAll();
List<Profession> professionsFout=professionService.getFroutEnd();
model.addAttribute("professionsFout",professionsFout);
List<Profession> professionsBack=professionService.getBackEnd();
model.addAttribute("professionsBack",professionsBack);
List<Profession> professionsMobile=professionService.getMobileEnd();
model.addAttribute("professionsMobile",professionsMobile);
return "cs11";
}
【Tiles来完成页面的复用配置】
先来添加依赖。
<dependency><groupId>org.apache.tiles</groupId> <artifactId>tiles-extras</artifactId> <version>3.0.5</version></dependency>
Spring mvc 中配置Tiles框架
<!-- Tiles相关配置 -->
<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
<property name="definitions">
<list>
<value>/WEB-INF/tiles.xml</value>
</list>
</property>
<property name="preparerFactoryClass" value="org.springframework.web.servlet.view.tiles3.SpringBeanPreparerFactory" />
</bean>
<!-- Tiles视图解析器 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView"/>
</bean>
建一个布局文件。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
"http://tiles.apache.org/dtds/tiles-config_2_0.dtd">
<tiles-definitions>
<definition name="10" template="/jsp/10templet.jsp">
<put-attribute name="title" value="" />
<put-attribute name="header" value="/jsp/10head.jsp" />
<put-attribute name="menu" value="/jsp/10menu.jsp" />
<put-attribute name="body" value="/jsp/10body.jsp" />
<put-attribute name="footer" value="/jsp/10foot.jsp" />
</definition>
<definition name="11" extends="10" template="11templet">
<put-attribute name="title" value=""/>
<put-attribute name="header" value="/jsp/head.jsp" />
<put-attribute name="menu" value="/jsp/menu.jsp" />
<put-attribute name="body" value="/jsp/CustomerForm.jsp"/>
</definition>
</tiles-definitions>
里面的各个页面还没拆分开,明天搞。
收获
学到了新的sql语句。
遇到的问题
我的student里面判断在学状态的字段名称是condition(状态的意思,但在查询的时候会报错)
这个语句看上去没有任何问题对不对。
很郁闷对不对。。。
我发现每次打condition都会给我默认大写。(幸亏用的navicat,这要是CMD怕是哭死)
就是说他把condition默认认定为sql的操作语句,就是保留字。
查了一下解决方法。
搞定。
但是为了避免我mapper映射里面还要注意,我就直接把字段名字改了。。。
都是一些小问题,研究研究都吃掉了。
明天的计划
完成任务四
评论