参考https://blog.csdn.net/gebitan505/article/details/44455235/ 搭建ssm框架遇到的问题小结:
1:Cannot load JDBC driver class 'com.mysql.jdbc.Driver '
jdbc未连接检查jdbc.properties 配置文件中路径后面是否有空格,去掉空格
2:Cannot find class: BaseResultMap
将mapping中对应的redultType改为resultMap
3:Invalid bound statement (not found) :确保mapper文件namespace和dao路径对应
检查在spring-mybatis文件中是否配置mapper.xml自动扫描信息:
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- 自动扫描mapping.xml文件 -->
<property name="mapperLocations" value="classpath:com/wl/mapping/*.xml"></property>
</bean>
也可以在pom文件中添加resource编译,因为mapper文件不是放在resource中,maven编译的时候没有把xml文件编译进来。
<build><finalName>ssmTest</finalName>
<resources>
<resource>
<!--此处配置到java是因为mapper.xml文件在java目录-->
<directory>src/main/java</directory>
<includes>
<include>**/*</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
4:ssm中注解应用理解:
@Repository用于标注数据访问组件,即DAO
@Service用于标注业务层
@Controller用于标注控制层组件
@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注,把pojo实例化到spring容器中
@Autowired后不需要getter()和setter()方法,Spring也会自动注入
@Resource注解标记可以用在字段定义或setter方法定义前面,默认首先按名称匹配注入,然后类型匹配注入
@Autowired注解标记也可以用在字段定义或setter方法定义前面,默认按类型匹配注入
@RequestMapping可以用在controller类定义和方法定义上
@Controller
@RequestMapping("/user")
public class UserController {
@Resource
private IUserService userService;
@RequestMapping("/showUser")
public String showUser(HttpServletRequest request, Model model) {
int userId = Integer.parseInt(request.getParameter("id"));
User user = this.userService.getUserById(userId);
model.addAttribute("user", user);
return "showUser";
}
@RequestMapping("/user") @RequestMapping("/showUser") 连接浏览器中url地址 请求路径
return "showUser"; 返回对应的页面路径名称
这种bean默认是“singleton”的,如果想改变,可以使用@Scope(“prototype”)来改变。