目录
1.注意这个注意这个注意这个!!!(如果缺少清除再重新打包)


注:选下面图片这个是为了实现上面的热部署

注:有个分页插件依赖,如果用到可以写,用不到就不写
为什么导入日志,因为mybatis里面需要实现日志功能logback是sl4j的实现
- <packaging>warpackaging>
- <dependencies>
-
- <dependency>
- <groupId>com.fasterxml.jackson.coregroupId>
- <artifactId>jackson-databindartifactId>
- <version>2.12.1version>
- dependency>
-
-
- <dependency>
- <groupId>junitgroupId>
- <artifactId>junitartifactId>
- <version>4.12version>
- dependency>
-
- <dependency>
- <groupId>mysqlgroupId>
- <artifactId>mysql-connector-javaartifactId>
- <version>8.0.21version>
- dependency>
-
-
- <dependency>
- <groupId>com.alibabagroupId>
- <artifactId>druidartifactId>
- <version>1.0.29version>
- dependency>
- <dependency>
- <groupId>com.github.pagehelpergroupId>
- <artifactId>pagehelperartifactId>
- <version>5.1.2version>
- dependency>
-
-
- <dependency>
- <groupId>org.mybatisgroupId>
- <artifactId>mybatisartifactId>
- <version>3.5.2version>
- dependency>
-
- <dependency>
- <groupId>org.mybatisgroupId>
- <artifactId>mybatis-springartifactId>
- <version>2.0.2version>
- dependency>
-
-
- <dependency>
- <groupId>org.springframeworkgroupId>
- <artifactId>spring-webmvcartifactId>
- <version>5.3.1version>
- dependency>
-
- <dependency>
- <groupId>org.springframeworkgroupId>
- <artifactId>spring-jdbcartifactId>
- <version>5.3.1version>
- dependency>
-
- <dependency>
- <groupId>ch.qos.logbackgroupId>
- <artifactId>logback-classicartifactId>
- <version>1.2.3version>
- dependency>
-
-
- <dependency>
- <groupId>javax.servletgroupId>
- <artifactId>javax.servlet-apiartifactId>
- <version>3.1.0version>
- <scope>providedscope>
- dependency>
-
- <dependency>
- <groupId>javax.servletgroupId>
- <artifactId>jsp-apiartifactId>
- <version>2.0version>
- <scope>providedscope>
- dependency>
- <dependency>
- <groupId>commons-fileuploadgroupId>
- <artifactId>commons-fileuploadartifactId>
- <version>1.3.1version>
- dependency>
-
- <dependency>
- <groupId>javax.servletgroupId>
- <artifactId>jstlartifactId>
- <version>1.2version>
- <scope>runtimescope>
- dependency>
-
-
- dependencies>
注:编码过滤器和前端控制器必须有,剩下的只是实现部分功能方便。
- <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
- version="4.0">
- <filter>
- <filter-name>CharacterEncodingFilterfilter-name>
- <filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
- <init-param>
- <param-name>encodingparam-name>
- <param-value>UTF-8param-value>
- init-param>
- <init-param>
- <param-name>forceEncodingparam-name>
- <param-value>trueparam-value>
- init-param>
- filter>
- <filter-mapping>
- <filter-name>CharacterEncodingFilterfilter-name>
- <url-pattern>/*url-pattern>
- filter-mapping>
- <filter>
- <filter-name>HiddenHttpMethodFilterfilter-name>
- <filter-class>org.springframework.web.filter.HiddenHttpMethodFilterfilter-class>
- filter>
- <filter-mapping>
- <filter-name>HiddenHttpMethodFilterfilter-name>
- <url-pattern>/*url-pattern>
- filter-mapping>
- <servlet>
- <servlet-name>SpringMVCservlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
-
- <init-param>
- <param-name>contextConfigLocationparam-name>
- <param-value>classpath:springmvc.xmlparam-value>
- init-param>
- <load-on-startup>1load-on-startup>
- servlet>
- <servlet-mapping>
- <servlet-name>SpringMVCservlet-name>
- <url-pattern>/url-pattern>
- servlet-mapping>
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
- listener>
- <context-param>
- <param-name>contextConfigLocationparam-name>
- <param-value>classpath:spring-mybatis.xmlparam-value>
- context-param>
-
- web-app>
注:视图解析器和扫描器必须有,剩下的看自己是否需要
jsp和themleaf就一个视图解析器不同。其他配置都一样
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:mvc="http://www.springframework.org/schema/mvc"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd">
-
-
-
- <context:component-scan base-package="top.remained.controller">
- context:component-scan>
-
-
- <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <property name="prefix" value="/WEB-INF/pages/"/>
- <property name="suffix" value=".jsp"/>
- bean>
-
- <mvc:default-servlet-handler/>
-
- <mvc:annotation-driven/>
-
- <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
-
-
-
- beans>
注:大部分配置的都是mybatis里面的东西(IOC),扫描组件除去控制层的原因是,springmvc已经扫描过了,可以但没必要
过程
1.加载 jdbc.property
2.配置datasource 以bean的形式
3.配置sql工厂 以bean的形式
然后sql工厂 里面property 包括配好的数据源以ref="dataSource"
扫描注解包
扫描mapper包完成自动注入@AutoWired
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
-
- <context:component-scan base-package="top.remained">
- <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
- context:component-scan>
- <context:property-placeholder location="classpath:jdbc.properties"/>
- <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
- <property name="driverClassName" value="${jdbc.driver}"/>
- <property name="url" value="${jdbc.url}"/>
- <property name="username" value="${jdbc.user}"/>
- <property name="password" value="${jdbc.pwd}"/>
- bean>
- <bean id="dataSourceTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
- <property name="dataSource" ref="dataSource"/>
- bean>
- <tx:annotation-driven transaction-manager="dataSourceTransactionManager"/>
- <bean class="org.mybatis.spring.SqlSessionFactoryBean">
- <property name="typeAliasesPackage" value="top.remained.pojo"/>
- <property name="dataSource" ref="dataSource"/>
- <property name="configLocation" value="classpath:mybatis.xml"/>
-
- bean>
- <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
- <property name="basePackage" value="top.remained.mapper"/>
- bean>
- beans>
注:mybatis为什么只有一个分页插件,因为在spring-mybatis里面已经配置过了,
分页插件 也可以在spring-mybatis里面配置,这样的话spring-mybatis就不用加载
mybatis.xml这个文件,但是我感觉麻烦。分页插件也可以不用配置
- configuration
- PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-config.dtd">
- <configuration>
- <plugins>
- <plugin interceptor="com.github.pagehelper.PageInterceptor"/>
- plugins>
- configuration>
- jdbc.driver=com.mysql.cj.jdbc.Driver
- jdbc.url=jdbc:mysql://localhost/ssm?serverTimezone=UTC
- jdbc.user=root
- jdbc.pwd=123456
- log4j:configuration SYSTEM "log4j.dtd">
- <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
- <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
- <param name="Encoding" value="UTF-8"/>
- <layout class="org.apache.log4j.PatternLayout">
- <param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS}
- %m (%F:%L) \n"/>
- layout>
- appender>
- <logger name="java.sql">
- <level value="debug"/>
- logger>
-
-
- <logger name="org.apache.ibatis">
- <level value="info"/>
- logger>
- <root>
- <level value="debug"/>
- <appender-ref ref="STDOUT"/>
- root>
- log4j:configuration>
- @Controller
- public class UserController {
- @RequestMapping("/")
- public String index(){
- // 不能直接获取员工信息,因为要获取页码数等传递到web
-
- return "index";
- }
- <%@ page contentType="text/html;charset=UTF-8" language="java" %>
-
- <html>
- <head>
- <title>Titletitle>
- head>
- <body>
- 《success》
- <a href="/findAllUser">查询用户信息a>
- body>
- html>



Error creating bean with name 'xxxBizImpl': Unsatisfied dependency expressed through field 'xxxMapper';
理解
使用bean标签创建SqlSessionFactory对象,注入DataSource数据 相当于底层已经创建好SqlSession对象 交给Spring管理
使用bean标签创建MapperConfigurer对象,用于扫描dao包,交给Spring管理
spring 底层已经创建好SqlSession对象 交给Spring管理 所以你如果在mybatis里面配置
是不是有点多余,而且在mybatis里面配置这个,需要我们手动创建sqlSession对象 岂不是多此一举
所以在spring里面配置这个就行