58SSM项目

一、项目介绍

58SSM项目
58SSM项目
58SSM项目

根据登录界面分析数据库中的管理员表

58SSM项目

58SSM项目

根据商品显示界面分析数据库中的商品表和商品类型表

58SSM项目
58SSM项目

58SSM项目

新建项目

58SSM项目
58SSM项目
58SSM项目
58SSM项目
58SSM项目

目录改造

58SSM项目

项目分析

58SSM项目

二、项目开发

pom.xml

真实开发中这些架子会有人给搭好。
修改了数据库版本号。

58SSM项目

jdbc.properties

将其拷贝到main\resource下,修改参数。
58SSM项目

SqlMapConfig.xml

mybatis的配置文件。
只配置分页插件,其余都整合到了Spring中。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE 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"></plugin>
    </plugins>

</configuration>

applicationContext_dao.xml

spring的配置文件。
使用spring创建xml,若没有此选项,则先刷新maven依赖。
classpath:在资源根目录下查找文件。

<!--    读取jdbc.properties文件-->
    <context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>

<!--    创建数据源-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driver}"></property>
        <property name="url" value="${jdbc.url}"></property>
        <property name="username" value="${jdbc.username}"></property>
        <property name="password" value="${jdbc.password}"></property>
    </bean>

<!--    创建SqlSessionFactoryBean-->
    <bean class="org.mybatis.spring.SqlSessionFactoryBean">
<!--        配置数据源-->
        <property name="dataSource" ref="dataSource"></property>
<!--        配置mybatis的核心配置文件-->
        <property name="configLocation" value="classpath:SqlMapConfig.xml"></property>
<!--        配置实体类-->
        <property name="typeAliasesPackage" value="com.xiaoboer.ssm.pojo"></property>
    </bean>

<!--    配置mapper文件的扫描器-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.xiaoboer.ssm.mapper"></property>
    </bean>

applicationContext_service.xml

<!--    设置业务逻辑层的包扫描器,目的是在指定路径下,使用@Service注解的类,spring负责创建对象,并添加依赖-->
    <context:component-scan base-package="com.xiaoboer.ssm.service"></context:component-scan>

<!--    设置事务管理器,爆红不影响-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>

<!--    添加事务的切面-->
    <tx:advice id="myadvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="*select*" read-only="true"/>
            <tx:method name="*find*" read-only="true"/>
            <tx:method name="*get*" read-only="true"/>
            <tx:method name="*search*" read-only="true"/>
            <tx:method name="*insert*" propagation="REQUIRED"/>
            <tx:method name="*save*" propagation="REQUIRED"/>
            <tx:method name="*add*" propagation="REQUIRED"/>
            <tx:method name="*delete*" propagation="REQUIRED"/>
            <tx:method name="*remove*" propagation="REQUIRED"/>
            <tx:method name="*clear*" propagation="REQUIRED"/>
            <tx:method name="*update*" propagation="REQUIRED"/>
            <tx:method name="*modify*" propagation="REQUIRED"/>
            <tx:method name="*change*" propagation="REQUIRED"/>
            <tx:method name="*set*" propagation="REQUIRED"/>
            <tx:method name="*" propagation="SUPPORTS"/>
        </tx:attributes>
    </tx:advice>

<!--    完成切面和切入点的植入-->
    <aop:config>
        <aop:pointcut id="mypoint" expression="execution(* com.xiaoboer.ssm.service.*.*(..))"/>
    </aop:config>

springmvc.xml

配置注解驱动有点问题。

<!--    设置包扫描器-->
    <context:component-scan base-package="com.xiaoboer.ssm.controller"></context:component-scan>

<!--    设置视图解析器     /admin/  xxx  .jsp-->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/admin/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>

<!--    设置文件上传核心组件-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">


    </bean>
<!--    设置注解驱动  有点儿问题-->
    <mvc:annotation-driven/>

web.xml

58SSM项目

字符编码写在最前面。
注册dispatcher,可以用/,但用/你就得配置静态资源的访问。
用 / 的 还需要配置一个default-servlet-handler。

<!--    添加字符编码过滤器  注意写在配置最前面-->
    <filter>
        <filter-name>encode</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceRequestEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>forceResponseEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encode</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

<!--    注册SpringMVC框架  注意*.action-->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>*.action</url-pattern>
    </servlet-mapping>


<!--    注册Spring框架  注意添加context-param-->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext_*.xml</param-value>
    </context-param>

mybatis的逆向工程生成pojo+mapper

逆向生成的配置文件:

<generatorConfiguration>
	<context id="testTables" targetRuntime="MyBatis3">
		<commentGenerator>
			<!-- 是否去除自动生成的注释 true:是 : false:否 -->
			<property name="suppressAllComments" value="true" />
		</commentGenerator>
		<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
		<jdbcConnection driverClass="com.mysql.jdbc.Driver"
			connectionURL="jdbc:mysql://localhost:3306/xiaomissm"
			userId="root"
			password="root">
		</jdbcConnection>
		<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和 
			NUMERIC 类型解析为java.math.BigDecimal -->
		<javaTypeResolver>
			<property name="forceBigDecimals" value="false" />
		</javaTypeResolver>

		<!-- targetProject:生成PO类的位置 -->
		<javaModelGenerator targetPackage="com.xiaoboer.ssm.pojo"
			targetProject=".\src">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
			<property name="enableSubPackages" value="false" />
			<!-- 从数据库返回的值被清理前后的空格 -->
			<property name="trimStrings" value="true" />
		</javaModelGenerator>
        <!-- targetProject:mapper映射文件生成的位置 -->
		<sqlMapGenerator targetPackage="com.xiaoboer.ssm.mapper"
			targetProject=".\src">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
			<property name="enableSubPackages" value="false" />
		</sqlMapGenerator>
		<!-- targetPackage:mapper接口生成的位置 -->
		<javaClientGenerator type="XMLMAPPER"
			targetPackage="com.xiaoboer.ssm.mapper"
			targetProject=".\src">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
			<property name="enableSubPackages" value="false" />
		</javaClientGenerator>
		<!-- 指定数据库表 -->
		<table schema="" tableName="admin"></table>
		<table schema="" tableName="product_info"></table>
		<table schema="" tableName="product_type"></table>
		
	</context>
</generatorConfiguration>

运行代码:
58SSM项目
拷贝到原项目的包下:

58SSM项目

困难

2019的idea与3.6以上的maven不兼容

解决方法:使用idea自带的maven,但settings文件用的是3.6.3的。
58SSM项目

添加事务切面,没有transaction-manager属性

transaction-manager Attribute transaction-manager is not allowed here。

解决方法:
58SSM项目

将上面红色标注的代码换成如下即可:

xmlns:tx=“http://www.springframework.org/schema/tx”

结束

上一篇:【mybatis】mybatis 多条件参数和 in list使用


下一篇:windows启动kafka_2.13-2.7.1