写点什么

Day141

  • 2022 年 5 月 06 日
  • 本文字数:5031 字

    阅读完需:约 17 分钟

<version>4.3.7.RELEASE</version>


</dependency>


<dependency>


<groupId>org.springframework</groupId>


<artifactId>spring-aspects</artifactId>


<version>4.3.7.RELEASE</version>


</dependency>


<dependency>


<groupId>org.mybatis</groupId>


<artifactId>mybatis</artifactId>


<version>3.4.2</version>


</dependency>


<dependency>


<groupId>org.mybatis</groupId>


<artifactId>mybatis-spring</artifactId>


<version>1.3.1</version>


</dependency>


<dependency>


<groupId>com.alibaba</groupId>


<artifactId>druid</artifactId>


<version>1.2.4</version>


</dependency>


<dependency>


<groupId>mysql</groupId>


<artifactId>mysql-connector-java</artifactId>


<version>5.1.41</version>


</dependency>


<dependency>


<groupId>jstl</groupId>


<artifactId>jstl</artifactId>


<version>1.2</version>


</dependency>


<dependency>


<groupId>javax.servlet</groupId>


<artifactId>servlet-api</artifactId>


<version>2.5</version>


<scope>provided</scope>


</dependency>


<dependency>


<groupId>junit</groupId>


<artifactId>junit</artifactId>


<version>4.12</version>


<scope>test</scope>


</dependency>


<dependency>


<groupId>javax</groupId>


<artifactId>javaee-api</artifactId>


<version>8.0.1</version>


<scope>provided</scope>


</dependency>


<dependency>


<groupId>org.junit.jupiter</groupId>


<artifactId>junit-jupiter-api</artifactId>


<version>${junit.version}</version>


<scope>test</scope>


</dependency>


<dependency>


<groupId>org.junit.jupiter</groupId>


<artifactId>junit-jupiter-engine</artifactId>


<version>${junit.version}</version>


<scope>test</scope>


</dependency>


</dependencies>


<build>


<plugins>


<plugin>


<groupId>org.apache.maven.plugins</groupId>


<artifactId>maven-war-plugin</artifactId>


<version>3.3.0</version>


</plugin>


</plugins>


</build>


</project>


[](()4、引入 bootstrap 前端框架




去 bootstrap 官方下载模板文件,再放置文件夹导入使用


<%@ page contentType="text/html;charset=UTF-8" language="java" %>


<html>


<head>


<title>Title</title>


</head>


<script type="text/javascript" src="static/js/jquery-1.7.2.min.js"></script>


<link href="static/bootstrap-3.3.7-dist/css/bootstrap.min.css" rel="stylesheet">


<script src="static/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>


<body>


<button type="button" class="btn btn-success">按钮</button>


</body>


</html>


[](()5、编写 ssm 整合的关键配置文件




  • web.xml、spring、springmvc、mybatis,使用 mybatis 的逆向工程生成对应的 bean 和 mapper

  • 文件夹分布情况


[](()①dbconfig.properties:

jdbc_driverClassName=com.mysql.jdbc.Driver


jdbc_url=jdbc:mysql://localhost:3306/ssm_crud


jdbc_password=00000


jdbc_username=root

[](()②web.xml

<?xml version="1.0" encoding="UTF-8"?>


<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">


<context-param>


<param-name>contextConfigLocation</param-name>


<param-value>classpath:applicationContext.xml</param-value>


</context-param>


<listener>


<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>


</listener>


<servlet>


<servlet-name>dispatcherServlet</servlet-name>


<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>


<init-param>


<param-name>contextConfigLocation</param-name>


<param-value>classpath:applicationContext-mvc.xml</param-value>


</init-param>


<load-on-startup>1</load-on-startup>


<async-supported>true</async-supported>


</servlet>


<servlet-mapping>


<servlet-name>dispatcherServlet</servlet-name>


<url-pattern>/</url-pattern>


</servlet-mapping>


<filter>


<filter-name>CharacterEncodingFilter</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>CharacterEncodingFilter</filter-name>


<url-pattern>/*</url-pattern>


</filter-mapping>


<filter>


<filter-name>HiddenHttpMethodFilter</filter-name>


<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>


</filter>


<filter-mapping>


<filter-name>HiddenHttpMethodFilter</filter-name>


<url-pattern>/*</url-pattern>


</filter-mapping>


</web-app>


.

[](()③spring 的 applicationContext.xml:

<?xml version="1.0" encoding="UTF-8"?>


<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:aop="http://www.springframework.org/schema/aop" 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 http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">


<context:component-scan base-package="com.achang">


<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>


</context:component-scan>


<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">


<property name="location" value="classpath:/dbconfig.properties"/>


</bean>


<bean class="com.alibaba.druid.pool.DruidDataSource" id="druidDataSource">


<property name="driverClassName" value="${jdbc_driverClassName}"/>


<property name="url" value="${jdbc_url}"/>


<property name="password" value="${jdbc_password}"/>


<property name="username" value="${jdbc_username}"/>


</bean>


<bean class="org.mybatis.spring.SqlSessionFactoryBean" id="sessionFactory">


<property name="configLocation" value="classpath:mybatis_config.xml"/>


<property name="dataSource" ref="druidDataSource"/>


<property name="mapperLocations" value="classpath:mapper/*.xml"/>


</bean>


<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">


<property name="basePackage" value="com.achang.dao"/>


</bean>


<bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager" id="transactionManager">


<property name="dataSource" ref="druidDataSource"/>


</bean>


aop:config


<aop:pointcut id="txPoint" expression="execution(* com.achang.service..*(..))"/>


<aop:advisor advice-ref="txAdvice" pointcut-ref="txPoint"/>


</aop:config>


<tx:advice id="txAdvice" transaction-manager="transactionManager">


tx:attributes


<tx:method name="*"/>


<tx:method name="get*" read-only="true"/>


</tx:attributes>


</tx:advice>


</beans>


.

[](()④springmvc 的 applicationContext-mvc.xml:

<?xml version="1.0" encoding="UTF-8"?>


<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 http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">


<context:component-scan base-package="com.achang" use-default-filters="false">


<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>


</context:component-scan>


<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">


<property name="prefix" value="/WEB-INF/view"/>


<property name="suffix" value=".jsp"/>


</bean>


mvc:default-servlet-handler/


mvc:annotation-driven/


</beans>


.

[](()⑤mybatis_config.xml:

<?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>


<settings>


<setting name="mapUnderscoreToCamelCase" value="true"/>


</settings>


<typeAliases>


<package name="com.achang.bean"/>


</typeAliases>


</configuration>


.

[](()⑥逆向工程 MBG.xml:

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE generatorConfiguration


PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"


"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">


<generatorConfiguration>


<context id="DB2Tables" targetRuntime="MyBatis3">


<commentGenerator>


<property name="suppressAllComments" value="true" />


</commentGenerator>


<jdbcConnection driverClass="com.mysql.jdbc.Driver"


connectionURL="jdbc:mysql://localhost:3306/ssm_crud"


userId="root"


password="00000">


</jdbcConnection>


<javaTypeResolver >


<property name="forceBigDecimals" value="false" />


</javaTypeResolver>


<javaModelGenerator targetPackage="com.achang.bean" targetProject=".\src\main\java">


<property name="enableSubPackages" value="true" />


<property name="trimStrings" value="true" />


</javaModelGenerator>


<sqlMapGenerator targetPackage="mapper" targetProject=".\src\main\resources">


<property name="enableSubPackages" value="true" />


</sqlMapGenerator>


<javaClientGenerator type="XMLMAPPER" targetPackage="com.achang.dao" targetProject=".\src\main\java">


<property name="enableSubPackages" value="true" />


</javaClientGenerator>


<table tableName="tbl_emp" domainObjectName="Employee"/>


<table tableName="tbl_dept" domainObjectName="Department"/>


</context>


</generatorConfiguration>


  • 逆向工程的生成代码:


public class MBGTest {


@Test


public void testMBG() throws Exception{


List<String> warnings = new ArrayList<String>();


boolean overwrite = true;


File configFile = new File("D:\JavaStudy\SSM_CRUD\ssm_crud\src\main\resources\MBG.xml");


ConfigurationParser cp = new ConfigurationParser(warnings);


Configuration config = cp.parseConfiguration(configFile);


DefaultShellCallback callback = new DefaultShellCallback(overwrite);


MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);


myBatisGenerator.generate(null);


}


}


  • 生成的 bean 对象、dao 类、sql 映射文件



[](()6、测试 mapper 功能是否实现



[](()①使用原生单元测试

@Test


public void testCRUD(){


原生 spring 获取容器 mapper 方式


//1、创建 springIOC 容器


ApplicationContext ioc = new ClassPathXmlApplicationContext("applicationContext.xml");


//2、从容器中获取 mapper

用户头像

还未添加个人签名 2022.04.13 加入

还未添加个人简介

评论

发布
暂无评论
Day141_Java_爱好编程进阶_InfoQ写作社区