ssm框架mysql配置_基于java配置的SSM框架详细整合

一、整合Spring MVC + mybatis

1、配置DispatcherServlet

在这里请求会第一次接触到Spring MVC框架,DispatcherServlet通过查询一个或多个处理器映射来确定应该将请求发送到哪个控制器。一旦选择了合适的控制器,DispatcherServlet会将请求发送给选定的控制器。

下面我会使用Java将DispatcherServlet配置在Servlet容器中,而不会使用web.xml文件。唯一需要注意的是,如果按照这种方式配置DispatcherServlet,而不是使用web.xml的话,它只能部署到支持Servlet3.0的服务器(如Tomcat7或更高的版本)中才能正常工作。

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

/**

* 扩展AbstractAnnotationConfigDispatcherServletInitializer的任意类都会自动地配置

* DispatcherServlet和Spring应用上下文,Spring的应用上下文会位于应用程序的Servlet上下文之中

*/

public class MpdidbWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer

{

/**

*返回带有@Configuration注解的类将会用来配置ContextLoaderListener创建应用的应用上下文中的bean。

* ContextLoaderListener要加载应用中的其他bean,这些bean通常是驱动应用后端的中间层和数据层的组件。

*/

@Override

protected Class>[] getRootConfigClasses()

{

return new Class>[] {RootConfig.class};

}

/**

*返回带有@Configuration注解的类将会用来定义DispatcherServlet应用上下文中的bean。

* DispatcherServlet加载包含Web组件的bean,如控制器、视图解析器以及处理器映射器。

*/

@Override

protected Class>[] getServletConfigClasses()

{

return new Class>[] {WebConfig.class};

}

/**

* 将一个或多个路径映射到DispatcherServlet上,

* 此处它的映射是“/”,即默认的Servlet,会处理进入应用的所有请求

*/

@Override

protected String[] getServletMappings()

{

return new String[] { "/" };

}

}

2、启用Spring MVC

同样基于Java进行配置,所能创建的最简单的Spring MVC配置就是一个带有@EnableWebMvc注解的类。

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.ComponentScan;

import org.springframework.context.annotation.Configuration;

import org.springframework.web.servlet.ViewResolver;

import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;

import org.springframework.web.servlet.config.annotation.EnableWebMvc;

import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

import org.springframework.web.servlet.view.InternalResourceViewResolver;

@Configuration

@EnableWebMvc //启用Spring MVC

@ComponentScan("com.mpdidb.controller") //启用组件扫描

public class WebConfig extends WebMvcConfigurerAdapter

{

//配置JSP视图解析器

@Bean

public ViewResolver viewResolver()

{

InternalResourceViewResolver resolver =

new InternalResourceViewResolver();

resolver.setPrefix("/WEB-INF/views/");

resolver.setSuffix(".jsp");

//可以在JSP页面中通过${}访问beans

resolver.setExposeContextBeansAsAttributes(true);

return resolver;

}

/**

* WebConfig类扩展了configurer WebMvcConfigurerAdapter并重写了其configureDefaultServletHandling()方法.

* 通过调用DefaultServletHandlerConfigurer的enable()方法,要求DispatcherServlet将对静态资源的请求转发到Servlet容器默认的

* Servlet上,而不是使用DispatcherServlet来处理此类请求。

* @param

*/

@Override

public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer)

{

configurer.enable();

}

}

3、创建RootConfig配置类

WebConfig配置类已经就绪,下面创建RootConfig配置类。该配置类中导入了DataConfig配置类,DataConfig配置类整合了spring+mybatis。

import org.springframework.context.annotation.*;

import org.springframework.web.servlet.config.annotation.EnableWebMvc;

@Configuration

@Import(DataConfig.class)

/**

* 设置扫描机制的时候,将之前WebConfig设置过的那个包排除了;

*/

@ComponentScan(basePackages = {"com.mpdidb"},

excludeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION,

value = EnableWebMvc.class)})

public class RootConfig

{

}

4、创建DataConfig配置类

在创建DataConfig配置类之前要先创建jdbc.properties配置文件。

mysql.driver=com.mysql.cj.jdbc.Driver

mysql.url=jdbc:mysql://localhost:3306/mpdidb?useUnicode=true&characterEncoding=utf-8&useSSL=false&zeroDateTimeBehavior=convertToNull&autoReconnect=true

mysql.username=Your_username

mysql.password=Your_password

jdbc.properties配置文件创建完毕之后,就可以创建DataConfig配置类了

import org.apache.commons.dbcp.BasicDataSource;

import org.mybatis.spring.SqlSessionFactoryBean;

import org.mybatis.spring.annotation.MapperScan;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.context.annotation.PropertySource;

import org.springframework.core.env.Environment;

import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

import org.springframework.core.io.support.ResourcePatternResolver;

import javax.sql.DataSource;

@Configuration

//使用@MapperScan来扫描注册mybatis数据库接口类,其中basePackages属性表明接口类所在的包

@MapperScan(basePackages = "com.mpdidb.mapper")

@PropertySource("classpath:jdbc.properties")

public class DataConfig

{

@Autowired

private Environment environment;

/**

* 使用数据库链接池配置数据源

*/

@Bean

public BasicDataSource dataSource()

{

BasicDataSource ds = new BasicDataSource();

ds.setDriverClassName(environment.getProperty("mysql.driver"));

ds.setUrl(environment.getProperty("mysql.url"));

ds.setUsername(environment.getProperty("mysql.username"));

ds.setPassword(environment.getProperty("mysql.password"));

//初始化连接大小

ds.setInitialSize(5);

//初始化连接池数量

ds.setMaxActive(10);

return ds;

}

/**

* 声明mybatis的session工厂

* @return

* @throws Exception

*/

@Bean

public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource) throws Exception

{

ResourcePatternResolver patternResolver = new PathMatchingResourcePatternResolver();

SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();

sqlSessionFactoryBean.setDataSource(dataSource);

sqlSessionFactoryBean.setTypeAliasesPackage("com.mpdidb.domain");

sqlSessionFactoryBean.setMapperLocations(patternResolver.getResources("classpath:mapping/*Mapper.xml"));

return sqlSessionFactoryBean;

}

}

二、测试

1、测试前需要的文件

MySQL tb_user表

7f98eb5142bc?utm_campaign

2017-08-03 11-31-25屏幕截图.png

tb_user表对应的实体类TbUser.java

public class TbUser {

private String userId;

private String userRole;

private String userName;

private String password;

public String getUserId() {

return userId;

}

public void setUserId(String userId) {

this.userId = userId == null ? null : userId.trim();

}

public String getUserRole() {

return userRole;

}

public void setUserRole(String userRole) {

this.userRole = userRole == null ? null : userRole.trim();

}

public String getUserName() {

return userName;

}

public void setUserName(String userName) {

this.userName = userName == null ? null : userName.trim();

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password == null ? null : password.trim();

}

@Override

public String toString() {

return "TbUser{" +

"userId='" + userId + '\'' +

", userRole='" + userRole + '\'' +

", userName='" + userName + '\'' +

", password='" + password + '\'' +

'}';

}

TbUserMapper.xml

select *

from tb_user

where user_id = #{userId,jdbcType=VARCHAR}

delete from tb_user

where user_id = #{userId,jdbcType=VARCHAR}

insert into tb_user (user_id, user_role, user_name,

password)

values (#{userId,jdbcType=VARCHAR}, #{userRole,jdbcType=VARCHAR}, #{userName,jdbcType=VARCHAR},

#{password,jdbcType=VARCHAR})

update tb_user

set user_role = #{userRole,jdbcType=VARCHAR},

user_name = #{userName,jdbcType=VARCHAR},

password = #{password,jdbcType=VARCHAR}

where user_id = #{userId,jdbcType=VARCHAR}

TbUserMapper.java接口

import com.mpdidb.domain.TbUser;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import org.apache.ibatis.annotations.Select;

import org.springframework.stereotype.Repository;

@Repository

public interface TbUserMapper {

int deleteByPrimaryKey(String userId);

int insert(TbUser record);

TbUser selectByPrimaryKey(String userId);

int updateByPrimaryKey(TbUser record);

}

TbUserService.java接口

import com.mpdidb.domain.TbUser;

public interface TbUserService

{

TbUser selectByPrimaryKey(String userId);

}

TbUserService.java接口的具体实现类TbUserServiceImpl.java

import com.mpdidb.domain.TbUser;

import com.mpdidb.mapper.TbUserMapper;

import com.mpdidb.service.TbUserService;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

@Service

public class TbUserServiceImpl implements TbUserService

{

@Autowired

private TbUserMapper tbUserMapper;

@Override

public TbUser selectByPrimaryKey(String userId)

{

return tbUserMapper.selectByPrimaryKey(userId);

}

}

2、编写测试类

import com.mpdidb.config.RootConfig;

import com.mpdidb.domain.TbUser;

import org.junit.Test;

import org.junit.runner.RunWith;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.test.context.ContextConfiguration;

import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class) //让测试运行于spring测试环境,在使用所有注释前必须使用

@ContextConfiguration(classes = {RootConfig.class})

public class TbUserServiceTest

{

@Autowired

private TbUserService tbUserService;

@Test

public void selectByPrimaryKeyTest()

{

String userId = "wusuodai";

TbUser tbUser = tbUserService.selectByPrimaryKey(userId);

System.out.println(tbUser.getUserName());

}

}

3、测试结果,通过

7f98eb5142bc?utm_campaign

2017-08-03 11-43-33屏幕截图.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值