spring+springmvc+mybatis(SSM)

spring+springMVC+mybatis的整合 part

2017-07-17  本文已影响110人  意识流丶
SSM框架实例--管理系统--登录注册的功能分析

分析:
登录和注册,都是用户的行为,也是开发中常说的某个行为对应的业务
注册用户:意味着添加用户,添加了用户后,才有登录功能的继续执行的可能。
用户登录:也是用户信息的查找和比对过程。一般来说用户先把信息提交给程序,然后程序按照流程执行后提交数据给服务器(流程中程序可能会产生一些业务逻辑的判断),服务器收到数据并进行数据对比,当用户信息存在且帐号和密码匹配才能登录成功,否则前面的任意条件不满足即为登录失败
可以依靠单一的用户表来实现用户的登录数据获取注册信息的添加

功能大概分析完毕后,就可以考虑下如何实现这些功能。大概图示如下:

Paste_Image.png
按照我们编程的原则,一次编码处处运行,我们可以把这些注解放到BaseTest中,后面所有的单元测试都继承BaseTest即可避免大量重复编码。
BaseTest是主测试类
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"classpath:spring/spring-*.xml"})
public class BaseTest {
}

@RunWith(SpringJUnit4ClassRunner.class)是为了让测试在Spring容器环境下执行。
@ContextConfiguration({"classpath:spring/spring-*.xml"})用于指定配置文件所在的位置
代码非常简单,用与dao,service测试类继承用

UserDaoTest,每个@Test单独测试,由于测试结果不回滚,可以在数据库看到测试是否成功

public class UserDaoTest extends BaseTest {
    @Autowired
    private UserDao userDao;

    @Test
    public void testAdd() {
        User user = new User();
        user.setLoginId("2015081040");
        user.setName("意识流");
        user.setPwd("123456");
        user.setSex("不知道");
        int result = 0; //受影响的行数默认为0
        try {
            result = userDao.add(user);
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("添加用户失败");
        }
        if (result>0)
            System.out.println("添加用户成功");
    }

    @Test
    public void testFindOneId() throws Exception {
        User user = new User();
        user.setLoginId("2015081040");
        User result = null; //受影响的行数默认为0
        try {
            result = userDao.findOneById(user.getLoginId());
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("查找用户失败");
        }
        if (null!=result)
            System.out.println("查找用户成功\n"+result.toString());
    }

    @Test
    public void testDelete() {
        User user = new User();
        user.setLoginId("2015081040");
        int result = 0; //受影响的行数默认为0
        try {
            result = userDao.delete(user);
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("删除用户失败");
        }
        if (result>0)
            System.out.println("删除用户成功");
    }

    @Test
    public void testUpdate() {
        User user = new User();
        user.setLoginId("2015081040");
        user.setName("pjb");
        user.setPwd("123456");
        user.setSex("男");
        int result = 0; //受影响的行数默认为0
        try {
            result = userDao.update(user);
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("更新用户信息用户失败");
        }
        if (result>0)
            System.out.println("更新用户信息用户成功");

    }
}

**在测试的时候可能会发现userDao 显示Could not autowire, No beans of 'UserDao' type found **

Paste_Image.png
但程序的编译和运行都是没有问题的,这个错误提示并不会产生影响。但红色的错误提示在有些有强迫症的程序员眼里,多多少少有些不太舒服。

原因
  spring auto scan配置,在编辑情况下,无法找不到对应的bean,于是提示找不到对应bean的错误。常见于mybatismapper,如下:

<!-- 4.配置扫描Dao接口包,动态实现Dao接口,注入到spring容器中 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- 注入sqlSessionFactory -->
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
        <!-- 给出需要扫描Dao接口包 -->
        <property name="basePackage" value="pjb.ssm.dao"/>
    </bean>
  1. 解决方案
    降低Autowired检测的级别,将Severity的级别由之前的error改成warning或其它可以忽略的级别。
    在project→settings中设置Autowired检测的级别
    Paste_Image.png 设置完后可以发现userDao的红线消失了

主要参考于大牛Clone丶记忆的SSM集成之路

上一篇下一篇

猜你喜欢

热点阅读