先说下mybatis推荐的目录结构,controller是控制层,dao是数据操作层(比如定义了News findByName(@Param("newsColumnid") Long newsColumnid)函数,然后根据map文件进行查找(
<select id="findByName" resultMap="BaseResultMap" parameterType="java.lang.Long">
select
<include refid="Base_Column_List" />
from yf_news
where news_columnid = #{newsColumnid}
</select>
),domain是实体类,就是把数据库的字段写成变量(字典转模型),service是业务逻辑类,这里的服务是要注入到spring里面去的,在controller里面有下面的注入:
@Autowired
private NewsService newsService;
这里面就自动把刚才注入的业务逻辑类给注入给newsService了。然后,controlloer就可以对外暴露url了:
@RequestMapping(value = "/api/newslist", method = RequestMethod.GET)
public News findNews(@RequestParam(value = "columnid", required = true) Long newsColumnid) {
return newsService.findNewsById(newsColumnid);
}
下面是在调试过程中遇到的几个问题:
1. 如果mapper文件夹下有多个xml文件,又或许下面有生成的out.xml文件的话,会报错;
2. 因为findNews里面只能返回1条新闻,如果有多条满足要求的结果会报错,如果要返回多条,要用ArrayList;
3. application.properties里面设置远程数据库可能会遇到访问速度慢的问题,最好使用本机的mysql数据库
更加详细的步骤请参考:http://www.bysocket.com/?p=1610