Интегрированный SSM-фрейм Maven (Maven + Spring + Springmvc + Mybatis)

задняя часть Spring MyBatis maven

Ага, наконец-то пришло время интегрировать SSM с Maven. На прохождение ушел целый день. Конфигурация Mybatis немного громоздка и немного отличается от той, которую я изучил ранее.Кроме того, инструмент Eclipse Spring не использовался, и при настройке нет подсказки, чтобы запутаться. Но, к счастью, в конце концов, это было сделано только с моими превосходными навыками! ! Хахаха

Адрес исходного кода проектаПроходящие мимо друзья помогите заказать песни звезда☆ ^_^

Первый: подготовить материалы

Eclipse+Maven+jdk+Tomcat, про установку особо нечего сказать.

Два: Eclipse новый проект Maven

File->New->MavenProject->maven-archetype-webapp

Group Id: com.bigname
Artifacrt Id: MavenDemo01

Третий: Создайте структуру каталогов

Создайте свою любимую структуру каталогов, чтобы отразить архитектурную идею

这里写图片描述

Четыре: добавить зависимости

Объявите зависимости в pom.xml и используйте этот веб-сайт, чтобы найти запись конфигурации (http://mvnrepository.com/)

1: зависит от SpringMVC

А. Объявите зависимости, в это время пакет jar будет загружен автоматически

<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-webmvc</artifactId>
	<version>4.3.14.RELEASE</version>
</dependency>

Б. Создайте файл конфигурации: Создайте spring-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:p="http://www.springframework.org/schema/p"
	xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:util="http://www.springframework.org/schema/util"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd  
            http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd  
            http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd">

	<!-- 开启注解 -->
	<mvc:annotation-driven />
	
	<!-- 让扫描spring扫描这个包下所有的类,让标注spring注解的类生效 -->
	<context:component-scan base-package="com.bigname.demo03.controller"></context:component-scan>
	
	<!-- 视图解析器 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/views/" />
		<property name="suffix" value=".jsp"></property>
	</bean>
</beans>

в. Добавьте конфигурацию в файл web.xml.

 <!-- 定义前端控制器 -->
  <servlet>
  	<servlet-name>spring-mvc</servlet-name>
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  	<!-- 指定路径 -->
  	<init-param>
  		<param-name>contextConfigLocation</param-name>
  		<param-value>classpath:spring-mvc.xml</param-value>
  	</init-param>
  	<!-- 随spring启动而启动 -->
  	<load-on-startup>1</load-on-startup>
  </servlet>
  
  <servlet-mapping>
  	<servlet-name>spring-mvc</servlet-name>
  	<url-pattern>*.do</url-pattern>
  </servlet-mapping>

В это время вы можете создать новый контроллер, чтобы проверить, может ли запрос пройти, а затем выполнить следующий шаг, если он будет успешным.

2: зависит от весны

Поскольку при использовании springmvc было добавлено много пакетов, связанных с Spring, в настоящее время нет необходимости добавлять дополнительные пакеты, и файл конфигурации можно создать напрямую.

а. Создайте файл конфигурации spring-context.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:p="http://www.springframework.org/schema/p"
	xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:util="http://www.springframework.org/schema/util"
	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-3.0.xsd  
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd  
            http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd  
            http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd
            http://www.springframework.org/schema/tx 
            http://www.springframework.org/schema/tx/spring-tx.xsd 
            http://www.springframework.org/schema/aop 
            http://www.springframework.org/schema/aop/spring-aop.xsd
            "
            > 

</beans>  

б. Настройте весну в web.xml

<!-- 配置适配器spring -->
  <listener>
  	<description>启动spring容器</description>
  	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  
  <context-param>
  	<param-name>contextConfigLocation</param-name>
  	<param-value>classpath:spring-context.xml</param-value>
  </context-param>  

На данный момент весна настроена

3. Зависит от c3p0

Нужно зависеть от пакета jar

  • c3p0
  • jdbc-mysql

А. Добавьте объявление зависимости в pom.xml

<!-- c3p0 数据库连接池 -->
		<dependency>
			<groupId>com.mchange</groupId>
			<artifactId>c3p0</artifactId>
			<version>0.9.5.2</version>
		</dependency>

		<!-- 数据库 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>6.0.6</version>
		</dependency>

б. Настройте c3p0 в spring-context.xml

<!-- 配置c3p0 -->
	<!-- 连接池 -->
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
		<property name="jdbcUrl" value="jdbc:mysql://localhost/test?characterEncoding=utf8&amp;serverTimezone=UTC"></property>
		<property name="user" value="root"></property>
		<property name="password" value="root"></property>
		<property name="minPoolSize" value="1"></property>
		<property name="maxPoolSize" value="5"></property>
		<property name="initialPoolSize" value="1"></property>
		<property name="acquireIncrement" value="1"></property>
	</bean>
4. Настроить весной декларативную транзакцию управления

Нужно зависеть от пакета jar

  • spring-tx
  • spring-jdbc

А. Жизненные зависимости в pom.xml

<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-tx</artifactId>
			<version>4.3.14.RELEASE</version>
		</dependency>

		
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>4.3.14.RELEASE</version>
		</dependency>

б. Настроить в spring-context.xml Если эти tx популярны, вам нужно проверить, является ли информация заголовка файла полной. Вы можете прокрутить вверх, чтобы увидеть spring-context.xml

<!-- 配置事务管理器 -->
	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"></property>
	</bean>
	
	<!-- 使用注解来控制事务 -->
	<tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>
5: Зависеть от Мибатиса

Всего здесь зависит от четырех пакетов банок.

  • мибатис,
  • интеграция mybatis-spring
  • Страница страницы,
  • cglib-прокси

А. Добавьте объявление зависимости в pom.xml

		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.4.1</version>
		</dependency>

		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>1.3.0</version>
		</dependency>

		<!--  分页助手 -->
		<dependency>
			<groupId>com.github.pagehelper</groupId>
			<artifactId>pagehelper</artifactId>
			<version>5.1.2</version>
		</dependency>
		
		<!-- 代理 -->
		<dependency>
			<groupId>cglib</groupId>
			<artifactId>cglib</artifactId>
			<version>3.2.2</version>
		</dependency>

б. Создать новый файл конфигурации mybatis 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="cacheEnabled" value="true"/>
		<setting name="defaultStatementTimeout" value="3000"/>
		<setting name="mapUnderscoreToCamelCase" value="true"/>
		<!-- 代理 -->
		<setting name="proxyFactory" value="CGLIB"/>
		<setting name="lazyLoadingEnabled" value="true"/>
	</settings>
	
	<!-- 分页插件 -->
	<plugins>
		<plugin interceptor="com.github.pagehelper.PageInterceptor">
			<!-- 该参数默认为false
			设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用
			和startPage中的pageNum效果一样 -->
			<property name="offsetAsPageNum" value="true"/>
			<!-- 该参数默认为false
			设置为true是,使用RowBounds分页会进行count查询 -->
			<property name="rowBoundsWithCount" value="true"/>
			<!-- 设置为true时,如果pageSize=0或者ROwRounds.limit=0就会查询出全部的结果
			(相当于每一偶执行分页查询,但是返回结果仍然是page类型) -->
			<property name="pageSizeZero" value="true"/>
		</plugin>
	</plugins>

</configuration>

На этот раз возникла проблема, тест провалился при запуске программы, потому что предыдущая запись по туториалу была:

		<plugin interceptor="com.github.pagehelper.PageHelper">
		<property name="dialect" value="mysql"/>

Затем было сообщено об исключении преобразования типов, и, наконец, информация в Интернете была изменена на то, что есть сейчас, и это было успешно.

с. Настроить MyBatis в Spring-Context.xml Здесь привязываются к источнику данных, файл конфигурации указывает местоположение, посадочную классную, сканирующее слово DAO

<!-- 配置mybatis, 绑定c3p0-->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource"></property>
		<property name="configLocation" value="classpath:mybatis-config.xml"></property>
		<property name="mapperLocations">
			<list>
				<value>classpath:mapper/*.xml</value>
			</list>
		</property>
	</bean>
	
	<!-- 扫描生成所有dao层 -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="com.bigname.demo03.dao"></property>
		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
	</bean>


На данный момент maven успешно интегрировал spring + springmvc + mybatis, а затем снова будет проведен интеграционный тест.

1. Создайте тест базы данных и таблицу Member

id name password
1 Лян Шицзе 123
2 Энди Ло 456
3 Чоу Юн Фат 789
4 shijie 123

2. Базовый уровень создает класс сущностей соответствовать полям базы данных

package com.bigname.demo03.core;

public class Member {
	private int id;
	private String name;
	private String password;
	public Member(){}
	public Member(int id, String name, String password) {
		super();
		this.id = id;
		this.name = name;
		this.password = password;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	@Override
	public String toString() {
		return "Member [id=" + id + ", name=" + name + ", password=" + password
				+ "]";
	}
	
}

3. Уровень dao создает класс доступа к данным А. Создайте интерфейс

public interface MemberDao {
	Member selectMemberByName(@Param("name")String name)throws Exception;
}

б. Создайте файл MemberDaoMapper.xml. Здесь возникла проблема. Когда возникает исключение при импорте китайского языка, это должен быть символ Ctrip $ перед знаком #. Кроме того, необходимо добавить аннотацию @Param, чтобы объяснить значение атрибута.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bigname.demo03.dao.MemberDao">
	<select id="selectMemberByName" resultType="com.bigname.demo03.core.Member" parameterType="string">
		select * from Member where name = #{name}
	</select>
</mapper>

Затем вы можете получить доступ к базе данных, пока вы получаете объект MemberDao.

4.функция для создания бизнес-класса а. Создайте бизнес-интерфейс участника

package com.bigname.demo03.function;

@Service
public interface IMemberFunction {
	Member login(String name, String passsword) throws Exception;
}

б) Создайте класс реализации бизнес-интерфейса участника.

package com.bigname.demo03.function;

@Service
public class MemberFunctionImpl implements IMemberFunction{
	@Autowired
	MemberDao mDao;
	
	public Member login(String name, String passsword) throws Exception {
		System.out.println(name + passsword);
		if(StringUtil.isNullOrZero(name)){
			System.out.println("用戶名不能為空");
			return null;
		}
		if(StringUtil.isNullOrZero(passsword)){
			System.out.println("密碼不能為空");
			return null;
		}
		Member member = mDao.selectMemberByName(name);
		return member;
	}

}

5. Создайте LoginController и определите интерфейс

package com.bigname.demo03.controller;
@Controller
public class LoginController {
	@Autowired
	IMemberFunction iMemberFunc;
	
	@RequestMapping(value = "/hello")
	public String hello(){
		System.out.println("接收到请求 ,Hello");
		return "hi";
	}
	
	@RequestMapping(value = "/login")
	public String login(String name, String password){
		try {
			Member member = iMemberFunc.login(name, password);
			if(member == null){
				System.out.println("登陆失败");
			}else {
				System.out.println("登陆成功");
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.out.println(e.getMessage());
			System.out.println("登录失败");
		}
		return null;
	}
}

Если конфигурация springmvc выполнена успешно, интерфейс hello.do можно использовать в обычном режиме.

доступ: http://localhost:8201/MavenDemo03/login.do?name=shijie&password=145 Если нет проблем, то это успех.


Кроме того: spring необходимо сканировать функциональный уровень, springmvc сканирует уровень контроллера, mybatis сканирует уровень dao, а классы, которые необходимо сканировать, должны добавлять аннотации компонентов, такие как @Controller. На первом этаже все еще есть некоторые подробные проблемы, которые могут быть записаны, но если у вас есть какое-то отношение к Ду Ниангу, вы всегда можете это решить~

На данный момент проект по сборке Maven+Spring+SpringMVC+Mybatis завершен, хоть он и очень простой и было много проблем, но наконец-то он успешен и можно спать спокойно.

Упорство и бесконечное обучение.