Mybatis+Spring+SpringMVC整合自用版

一、准备工作

1.创建一个新的maven项目,删掉src目录,配置pom.xml
2.给pom加入依赖和build
依赖包括六部分,单元测试,数据库驱动,mybatis,spring,servlet,aop

<dependencies>
   <!--Junit-->
   <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
       <version>4.12</version>
   </dependency>
   <!--数据库驱动-->
   <dependency>
       <groupId>mysql</groupId>
       <artifactId>mysql-connector-java</artifactId>
       <version>5.1.47</version>
   </dependency>
   <!-- 数据库连接池 非必要,可以用springframework.jdbc里那个 -->
   <dependency>
       <groupId>com.mchange</groupId>
       <artifactId>c3p0</artifactId>
       <version>0.9.5.2</version>
   </dependency>

   <!--Servlet - JSP -->
   <dependency>
       <groupId>javax.servlet</groupId>
       <artifactId>servlet-api</artifactId>
       <version>2.5</version>
   </dependency>
   <!--jspapi,非必要-->
   <dependency>
       <groupId>javax.servlet.jsp</groupId>
       <artifactId>jsp-api</artifactId>
       <version>2.2</version>
   </dependency>
   <!--jsp表达式,非必要-->
   <dependency>
       <groupId>javax.servlet</groupId>
       <artifactId>jstl</artifactId>
       <version>1.2</version>
   </dependency>

   <!--Mybatis-->
   <dependency>
       <groupId>org.mybatis</groupId>
       <artifactId>mybatis</artifactId>
       <version>3.5.2</version>
   </dependency>
   <dependency>
       <groupId>org.mybatis</groupId>
       <artifactId>mybatis-spring</artifactId>
       <version>2.0.2</version>
   </dependency>

   <!--Spring-->
   <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-webmvc</artifactId>
       <version>5.1.9.RELEASE</version>
   </dependency>
   <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-jdbc</artifactId>
       <version>5.1.9.RELEASE</version>
   </dependency>

   <!-- aop -->
	<dependency>
	   <groupId>org.aspectj</groupId>
	   <artifactId>aspectjweaver</artifactId>
	   <version>1.9.4</version>
	</dependency>

   <!-- lombok偷懒工具 -->
	<dependency>
	    <groupId>org.projectlombok</groupId>
	    <artifactId>lombok</artifactId>
	    <version>1.18.20</version>
	    <scope>provided</scope>
	</dependency>

   <!-- fastjson工具 -->
	<dependency>
	   <groupId>com.alibaba</groupId>
	   <artifactId>fastjson</artifactId>
	   <version>1.2.60</version>
	</dependency>

</dependencies>

<build>
   <resources>
       <resource>
           <directory>src/main/java</directory>
           <includes>
               <include>**/*.properties</include>
               <include>**/*.xml</include>
           </includes>
           <filtering>false</filtering>
       </resource>
       <resource>
           <directory>src/main/resources</directory>
           <includes>
               <include>**/*.properties</include>
               <include>**/*.xml</include>
           </includes>
           <filtering>false</filtering>
       </resource>
   </resources>
</build>

3.配置数据库文件,db.properties (mysql8还需要设置时区serverTimezone=Asia/Shanghai)

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://114.96.98.225:3306/word?useUnicode=true&characterEncoding=utf-8&useSSL=false
jdbc.username=root
jdbc.password=7XAjlgVdyz-(a

4.配置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="logImpl" value="STDOUT_LOGGING"/>
	</settings>
	<typeAliases>
       <package name="{{com.kuang.pojo}}"/>
   	</typeAliases>
</configuration>

5.配置Spring整合MyBatis,spring-dao.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"
      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">
   
   <!-- 0.扫描pojo -->
	<context:component-scan base-package="{{com.kuang.pojo}}"/>
   
   <!-- 1.关联数据库文件 -->
   <context:property-placeholder location="classpath:db.properties"/>

   <!-- 2.数据库连接池 修改class来更换连接池,dbcp,c3p0,德鲁伊-->
   <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
	</bean>

   <!-- 3.配置SqlSessionFactory对象 -->
   <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
       <!-- 注入数据库连接池 -->
       <property name="dataSource" ref="dataSource"/>
       <!-- 绑定上面的:mybatis-config.xml -->
       <property name="configLocation" value="classpath:mybatis-config.xml"/>
   </bean>

   <!-- 4.配置扫描Dao接口包,动态实现Dao接口注入到spring容器中 -->
   <!--解释 :https://www.cnblogs.com/jpfss/p/7799806.html-->
   <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
       <!-- 注入sqlSessionFactory -->
       <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
       <!-- 给出需要扫描Dao接口包 -->
       <property name="basePackage" value="{{com.kuang.dao}}"/>
   </bean>
</beans>

6.配置Spring整合service层,主要是事务,spring-service.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">

   <!-- 扫描service相关的bean 类上加@Service-->
   <context:component-scan base-package="{{com.kuang.service}}" />

   <!--Service层实现类注入到IOC容器中(这段利用注解就是自动装配@Autowire-bookMapper)service上有@Service注解时,这段就不写了。-->
<!--    <bean id="BookServiceImpl" class="com.kuang.service.BookServiceImpl">-->
<!--        <property name="bookMapper" ref="bookMapper"/>-->
<!--    </bean>-->

   <!-- 配置事务管理器 -->
   <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
       <!-- 注入数据库连接池 -->
       <property name="dataSource" ref="dataSource" />
   </bean>

   <!--配置事务通知-->
	<tx:advice id="txAdvice" transaction-manager="transactionManager">
	   <tx:attributes>
	       <!--配置哪些方法使用什么样的事务,配置事务的传播特性-->
	       <!--<tx:method name="add" propagation="REQUIRED"/>-->
	       <!--<tx:method name="delete" propagation="REQUIRED"/>-->
	       <!--<tx:method name="update" propagation="REQUIRED"/>-->
	       <!--<tx:method name="search*" propagation="REQUIRED"/>-->
	       <!--<tx:method name="get" read-only="true"/>-->
	       <tx:method name="*" propagation="REQUIRED"/>
	   </tx:attributes>
	</tx:advice>

   <!-- aop -->
   <aop:aspectj-autoproxy/>

   <aop:config>
	   <aop:pointcut id="txPointcut" expression="execution(* {{com.kuang.dao}}.*.*(..))"/>
	   <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/>
	</aop:config>

</beans>

7.1.配置Spring整合mvc层,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">

   <!--DispatcherServlet-->
   <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.xml</param-value>
       </init-param>
       <load-on-startup>1</load-on-startup>
   </servlet>
   <servlet-mapping>
       <servlet-name>DispatcherServlet</servlet-name>
       <url-pattern>/</url-pattern>
   </servlet-mapping>

   <!--编码过滤器encodingFilter-->
   <filter>
       <filter-name>encodingFilter</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>
   </filter>
   <filter-mapping>
       <filter-name>encodingFilter</filter-name>
       <url-pattern>/*</url-pattern>
   </filter-mapping>
   
   <!--Session过期时间-->
   <session-config>
       <session-timeout>15</session-timeout>
   </session-config>
</web-app>

7.2.配置Spring整合mvc层,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: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
   https://www.springframework.org/schema/mvc/spring-mvc.xsd">

   <!-- 配置SpringMVC -->
   <!-- 1.开启SpringMVC注解驱动 -->
   <mvc:annotation-driven />
   <!-- 2.静态资源默认servlet配置-->
   <mvc:default-servlet-handler/>

   <!-- 3.扫描web相关的bean -->
   <context:component-scan base-package="{{com.kuang.controller}}" />

   <!-- 4.配置jsp 显示ViewResolver视图解析器 非必要-->
   <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
       <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
       <property name="prefix" value="/WEB-INF/jsp/" />
       <property name="suffix" value=".jsp" />
   </bean>

</beans>

8.配置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"
      xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd">

   <import resource="spring-dao.xml"/>
   <import resource="spring-service.xml"/>
   <import resource="spring-mvc.xml"/>
   
</beans>

注:上文中{{此内容为需替换内容}}

二、开发流程

pojo、dao/mapper层

1.根据数据库编写pojo,例如

package com.baidu.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.stereotype.Component;

@Component("News")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class News {
    private int id;
    private String title;
    private int type_id;
}

2.mapper接口,利用@Param注解,纠正参数对照
3.mapper.xml实现接口,例如

<?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.baidu.dao.NewsMapper}}">
    <!--查询全部Book-->
    <select id="getNewsById" resultType="com.baidu.pojo.News">
        SELECT * from tb_news where id = #{id}
    </select>
</mapper>

service层

1.service接口类照搬dao接口类
2.注入dao层,建立dao对象,set/get,@Autowired
3.完善所有接口内方法
4.给实现类加上@Service

controller层

1.加注解@controller,@RestController,@RequestMapping("/xx")
2.注入service层,建立service对象,@Autowired,@Qualifier("beanId")
3.fastjson
        String str1 = JSON.toJSONString(list);
        String str2 = JSON.toJSONString(user1);

json乱码

        @RequestMapping(value = "/hello",produces = "application/json;charset=utf-8")

aop的使用

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;

@Aspect
public class AnnotationPointcut {
	@Before("execution(* com.kuang.service.UserServiceImpl.*(..))")
	public void before(){
	      System.out.println("---------方法执行前---------");
	}

	@After("execution(* com.kuang.service.UserServiceImpl.*(..))")
	public void after(){
	      System.out.println("---------方法执行后---------");
	}

	@Around("execution(* com.kuang.service.UserServiceImpl.*(..))")
	public void around(ProceedingJoinPoint jp) throws Throwable {
	      System.out.println("环绕前");
	      //执行目标方法proceed
	      Object proceed = jp.proceed();
	      System.out.println("环绕后");
	}
}

注:
注册bean被注解代替     
    @Controller控制器(注入服务),用于标注控制层组件(如struts中的action)
    @Service服务(注入dao),用于标注业务层组件
    @Repository dao(实现dao访问),用于标注数据访问组件,即DAO组件
    @Component (把普通pojo实例化到spring容器中,相当于配置文件中的<bean id="" class=""/>),泛指组件

idea创建webapp加载慢
    name=archetypeCatalog value=internal

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值