在测试之前,我们还需要添加一些静态资源,虽然现在和测试的内容关系不大,但是其对于项目以后的页面显示有很大的作用,建立的jsp,样式表css和一些js代码都做伪静态资源放置到src/main/java/webapp/WEB-INF/文件夹下面,分别简建立三个文件夹分别盛放js代码,css资源和jsp页面。
对于测试,采用一个简单的查询测试,比如根据商品id查询商品信息。跟据商品id查询商品信息。
用sql语句表示则为:
SELECT * from tb_item WHERE id=536563
由此,我们需要添加的内容为service层的业务逻辑,即这个查询逻辑。所以在newstyles-manager-service工程下面的com.newstyles.service文件夹下面写一个ItemService接口和其实现类ItemServiceImpl:
public interface ItemService {
TbItem getItemById(long itemId);
}
对于查询的内容,我们将通过返回一个json数据的形式,由此,我们需要使用到逆向工程生成的TbItem的对象,其对应的实现类为:
@Service //添加Service注解,在扫描包时可以将ItemService的实现类对象放到容器中
public class ItemServiceImpl implements ItemService {
//自动装配,利用spring容器中的itemMaapper对象自动装配
@Autowired
private TbItemMapper itemMapper;
//实现类中实现声明的方法
@Override
public TbItem getItemById(long itemId) {
// TODO Auto-generated method stub
//
TbItemExample example = new TbItemExample();
//添加查询条件
Criteria criteria = example.createCriteria();
criteria.andIdEqualTo(itemId);
List<TbItem> list = itemMapper.selectByExample(example);
if(list != null && list.size() > 0){
TbItem item = list.get(0);
return item;
}
return null;
}
}
这样,业务逻辑可以放一放了,但是要实现从网页上查询还差一个conroller层的编写,因为我们通过springmvc来控制,同时,还要使用springmvc的视图进行显示,所以,需要在controller层中编写这些业务,因为springmvc不提供服务。(位置为:newstyles-manager-web工程下面的src/main/java/com/newstyles/controller/)
@Controller
public class ItemController {
@Autowired
private ItemService itemService;
// 配置url和方法的映射关系
@RequestMapping("/item/{itemId}")
//返回一个json数据
@ResponseBody
public TbItem getItemById(@PathVariable Long itemId){
TbItem tbItem = itemService.getItemById(itemId);
return tbItem;
}
}
注意不要忘了加上Controller注解,使得ItemController能够被springmvc指定扫描的时候扫描到,将其放置到spingmvc容器中。
启动项目(maven build)进行测试,测试结果可能会出现404界面,可能是在springmvc的配置文件中,没有指定springmvc扫描对应的controller包;如指定好了,运行的时候出现了异常,http 500 ,根据报错信息,可以判断出是缺少mapper映射文件,而我们在项目中已经有了,而且是mybatis逆向生成的,通过分析.m2/responsery/对应的项目文件中可以发现,没有对应的映射文件,所以我们此时应该修改一下mapper的xml文件,加上以下内容;
<!-- 如果不添加此节点mybatis的mapper.xml文件都会被漏掉。 -->
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
这个的意思是,将src/main/java/文件夹下面的properties,xml文件作为资源一并添加。
所以此时测试,测试成功,返回一个json格式的数据:
到这里说明,我们的项目能够整体组合在一起了,能够较为顺利的运行了。