spring+springMVC+mybatis的整合 part
2017-07-17 本文已影响110人
意识流丶
SSM框架实例--管理系统--登录注册的功能分析
分析:
登录和注册,都是用户的行为,也是开发中常说的某个行为对应的业务。
注册用户:意味着添加用户,添加了用户后,才有登录功能的继续执行的可能。
用户登录:也是用户信息的查找和比对过程。一般来说用户先把信息提交给程序,然后程序按照流程执行后提交数据给服务器(流程中程序可能会产生一些业务逻辑的判断),服务器收到数据并进行数据对比,当用户信息存在且帐号和密码匹配才能登录成功,否则前面的任意条件不满足即为登录失败。
可以依靠单一的用户表来实现用户的登录数据获取和注册信息的添加。
功能大概分析完毕后,就可以考虑下如何实现这些功能。大概图示如下:
按照我们编程的原则,一次编码处处运行,我们可以把这些注解放到
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
**
但程序的编译和运行都是没有问题的,这个错误提示并不会产生影响。但红色的错误提示在有些有强迫症的程序员眼里,多多少少有些不太舒服。
原因
spring auto scan
配置,在编辑情况下,无法找不到对应的bean
,于是提示找不到对应bean
的错误。常见于mybatis
的mapper
,如下:
<!-- 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>
- 解决方案
降低Autowired
检测的级别,将Severity
的级别由之前的error
改成warning
或其它可以忽略的级别。
在project→settings中设置Autowired
检测的级别
Paste_Image.png 设置完后可以发现userDao
的红线消失了
主要参考于大牛Clone丶记忆的SSM集成之路