对于一个学后端的来说,特别是javaweb来说,ssm框架是必备的吧。以前学PHP是一个laravel框架全吃就开发了,可是javaweb的框架是真的多,spring,spring衍生的springboot,aop等等,映射层那里就有springmvc,Struts2,dao层的ORM方面就有hibernate和mybatis了,当初学习这些框架,没少磕磕碰碰。写久了ssh,对于hibernate的全自动是真的方便,导致我都不太记得sql怎么写了,不过今天就写了一次ssm,mybatis,半自动手写了sql,这个框架对数据库操作灵活性比hibernate的高很多。话不多说,下面是我项目的简单布局,maven构建,直接是springmvc的注解开发,我以前不太喜欢注解开发,现在觉得注解开发很方便.......
包的布局一目了然了,dto那个包,放的公共的实体类,可以跟view层进行数据交互,就是方便给其他类调用的,至于为什么不放在entity(这里的实体类基本都是对应数据库)那里,分开比较清晰管理。
下面是代码的源码,我已经上传到github了,点击下载GitHub地址 ,git可以直接拉取项目https://github.com/wanghexu/ssm_demo.git
总结:这里是spingmvc注解配置好了mybatis框架,实现简单的用户增删改查,如果需要增加模块功能,只需增加控制层,业务层接口,业务层,dao接口和实体类,最重要是mapper文件夹下面的xml文件,这个可以看作dao的实现类,就像我写的userdao.xml,里面namespace是dao接口的路径,这样相当接轨上了dao的接口,在接口里面的方法名要对应上xml里面的id,然后配置会自动你调用哪个方法自动找到xml里面对应id,实现里面的sql语句,然后返回,如果是操作是use表返回的就是对应实体类的User对象,所以有这句resultType="User",这点看我写的xml就清楚了。
还有一点就是,dao接口那里,如果是传过来一个参数,可以直接是User findByUsername(String username);两个值和超过两个值要这样User findByUsername(@Param("username")String username,@Param("password")String password);加入@Param,这样才可以达到接收传输数据,不然就会报错。原因是,因为不是调用方法传输数据,在xml那里它不知道你传过来的两个数据哪个是哪个,你可以写{0}和{1}下标告诉它,如果想使用{username}和{password},你就要使用@Param,同样的效果。
以上的总结,纯属个人看法,谢谢访问!!!