基于全注解整合ssm框架
2018-04-10 21:11
363 查看
一 创建项目
1. 修改项目编码为utf-8
2. 创建maven web项目
创建完成以后 项目有错 想不用管 去执行第三步
3. 配置maven插件(两个插件)<!-- 添加maven插件 -->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<!-- 编译时的插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build> 添加完插件如果还有错 执行下面步骤
4. 执行maven update (并添加ssm需要的依赖)
<!-- 整合spring mvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.9.RELEASE</version>
</dependency>
<!-- 整合jackson -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.5</version>
</dependency>
<!--添加mysql驱动程序依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.40</version>
</dependency>
<!-- 整合DRUID -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.23</version>
</dependency>
<!-- 整合junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!-- 整合mybatis依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.44</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.13.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3.13.RELEASE</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
5. 设置项目targeted runtimes
6. 修改项目project facets (jdk1.8)
二 资源整合
1. 搭建Spring MVC 环境
1)创建前端控制器(主要实现如下接口)import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
@ComponentScan("com.jt")
@EnableWebMvc
public class AppServletConfig extends WebMvcConfigurerAdapter {
} 2)创建如下类并实现下面的接口
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("/blog")
public class BlogController {
@RequestMapping("blogUI.do")
@ResponseBody
public String blogUI() {
return "blog";
}
} 4)访问这个Controller返回如下这成功
2. 整合Druid 连接池(两个依赖:mysql驱动,druid库文件)
1)创建如下配置类
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.ComponentScan.Filter;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.ControllerAdvice;
import com.alibaba.druid.pool.DruidDataSource;
@Configuration
@PropertySource("classpath:config.properties")
@ComponentScan("com.jt")
public class AppRootConfig {
/**
* 获取数据源
*
* @param driver
* @param url
* @param uname
* @param password
* @return
*/
@Bean("dataSource")
public DruidDataSource getDruidDataSource(@Value("${driver}") String driver, @Value("${url}") String url,
@Value("${uname}") String uname, @Value("${password}") String password) {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(driver);
dataSource.setUrl(url);
dataSource.setUsername(uname);
dataSource.setPassword(password);
return dataSource;
}
/**
* 创建sqlSessionFactory对象
*
* @param dataSource
* @return
*/
@Bean("sqlSessionFactory")
public SqlSessionFactoryBean getSqlSessionFactory(@Autowired DruidDataSource dataSource) {
SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
sessionFactoryBean.setDataSource(dataSource);
org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
configuration.addMappers("com.jt.dao");
sessionFactoryBean.setConfiguration(configuration);
return sessionFactoryBean;
}
/**
* 扫描dao包
*
* @return
*/
@Bean("mapperScannerConfigurer")
public MapperScannerConfigurer getMapperScannerConfigurer() {
MapperScannerConfigurer configurer = new MapperScannerConfigurer();
configurer.setBasePackage("com.jt.dao");
configurer.setSqlSessionFactoryBeanName("sqlSessionFactory");
return configurer;
}
}
2)config.properties文件如下driver=com.mysql.jdbc.Driver
url=jdbc:mysql:///cgbmybatis
uname=root
password=root 3)创建完成以后进行junit测试package test;
import java.sql.SQLException;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import com.alibaba.druid.pool.DruidDataSource;
import com.jt.config.AppRootConfig;
public class Test1 {
private AnnotationConfigApplicationContext context;
@Before
public void init() {
context = new AnnotationConfigApplicationContext(AppRootConfig.class);
}
@Test
public void text1() throws SQLException {
DruidDataSource bean = context.getBean("dataSource",DruidDataSource.class);
System.out.println(bean.getConnection());
}
@Test
public void text2() throws SQLException {
SqlSessionFactory factoryBean = context.getBean("sqlSessionFactory",SqlSessionFactory.class);
System.out.println(factoryBean);
}
@After
public void close() {
context.close();
}
}
3. 整合SSM 框架 并进行测试
1)创建实体(Blog)以及dao和service的接口和实现类
a. Blog实体类
package com.jt.entity;
import java.io.Serializable;
import java.util.Date;
/**
* Blog实体类
*/
public class Blog implements Serializable {
private static final long serialVersionUID = 1L;
public Integer id;
public String title;
public String content;
public Date createdTime;
public String authorId;
public Blog() {
super();
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public Date getCreatedTime() {
return createdTime;
}
public void setCreatedTime(Date createdTime) {
this.createdTime = createdTime;
}
public String getAuthorId() {
return authorId;
}
public void setAuthorId(String authorId) {
this.authorId = authorId;
}
@Override
public String toString() {
return "Blog [id=" + id + ", title=" + title + ", content=" + content + ", createdTime=" + createdTime
+ ", authorId=" + authorId + "]";
}
} b. dao接口package com.jt.dao;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import com.jt.entity.Blog;
public interface BlogDao {
/**
* 分页查询方法
*/
@Select("select * from blog limit #{startIndex},#{pageSize}")
public List<Blog> findPageBlogs(@Param("startIndex") Integer startIndex,@Param("pageSize") Integer pageSize);
}
c. service接口和它的实现类package com.jt.service;
import java.util.List;
import com.jt.entity.Blog;
public interface BlogService {
/**
*
* @param pageCurrent 当前页的页码值
* @return
*/
public List<Blog> findPageBlogs(Integer pageCurrent);
}
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.jt.entity.Blog;
import com.jt.service.BlogService;
@Controller
@RequestMapping("/blog")
public class BlogController {
@Autowired
private BlogService blogservice;
@RequestMapping("blogUI.do")
@ResponseBody
public List<Blog> blogUI(Integer pageCurrent) {
blogservice.findPageBlogs(pageCurrent);
return blogservice.findPageBlogs(pageCurrent);
}
}
4. 进行测试
5.备注
1)数据库结构
CREATE TABLE `blog` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(200) NOT NULL,
`content` varchar(500) NOT NULL,
`createdTime` date DEFAULT NULL,
`authorId` varchar(500) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8; 2)如果返回一个视图需要在AppServletConfig这个类 重写这个方法 /**
* 访问视图路径
*/
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
registry.jsp("/WEB-INF/pages/", ".jsp");
}
1. 修改项目编码为utf-8
2. 创建maven web项目
创建完成以后 项目有错 想不用管 去执行第三步
3. 配置maven插件(两个插件)<!-- 添加maven插件 -->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<!-- 编译时的插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build> 添加完插件如果还有错 执行下面步骤
4. 执行maven update (并添加ssm需要的依赖)
<!-- 整合spring mvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.9.RELEASE</version>
</dependency>
<!-- 整合jackson -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.5</version>
</dependency>
<!--添加mysql驱动程序依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.40</version>
</dependency>
<!-- 整合DRUID -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.23</version>
</dependency>
<!-- 整合junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!-- 整合mybatis依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.44</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.13.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3.13.RELEASE</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
5. 设置项目targeted runtimes
6. 修改项目project facets (jdk1.8)
二 资源整合
1. 搭建Spring MVC 环境
1)创建前端控制器(主要实现如下接口)import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
@ComponentScan("com.jt")
@EnableWebMvc
public class AppServletConfig extends WebMvcConfigurerAdapter {
} 2)创建如下类并实现下面的接口
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; /** * tomcat启动时 * 1)找到类路径下的META-INF目录 * 2)找到META-INF文件夹下的services目录 * 3)读取services目录下的/META-INF/services/javax.servlet.ServletContainerInitializer目录 * 4)依据文件中定义的类全名(SpringServletContainerInitializer),并创建对象 * 5)依据文件中定义的类上的注解@HandlesTypes注解声明的类型进行加载 * 6)然后调用类(SpringServletContainerInitializer)中的onStartup方法,并将@HandlesTypes声明这些类型传递给此方法 * 7)最后进行对象的创建和初始化 * */ public class JtWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { @Override protected Class<?>[] getRootConfigClasses() { // TODO Auto-generated method stub return null; } /** *加载配置类 */ @Override protected Class<?>[] getServletConfigClasses() { return new Class[] {AppServletConfig.class}; } /** * 过滤的路径 */ @Override protected String[] getServletMappings() { return new String[] {"*.do"}; } }3)新建一个Controller进行测试package com.jt.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("/blog")
public class BlogController {
@RequestMapping("blogUI.do")
@ResponseBody
public String blogUI() {
return "blog";
}
} 4)访问这个Controller返回如下这成功
2. 整合Druid 连接池(两个依赖:mysql驱动,druid库文件)
1)创建如下配置类
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.ComponentScan.Filter;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.ControllerAdvice;
import com.alibaba.druid.pool.DruidDataSource;
@Configuration
@PropertySource("classpath:config.properties")
@ComponentScan("com.jt")
public class AppRootConfig {
/**
* 获取数据源
*
* @param driver
* @param url
* @param uname
* @param password
* @return
*/
@Bean("dataSource")
public DruidDataSource getDruidDataSource(@Value("${driver}") String driver, @Value("${url}") String url,
@Value("${uname}") String uname, @Value("${password}") String password) {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(driver);
dataSource.setUrl(url);
dataSource.setUsername(uname);
dataSource.setPassword(password);
return dataSource;
}
/**
* 创建sqlSessionFactory对象
*
* @param dataSource
* @return
*/
@Bean("sqlSessionFactory")
public SqlSessionFactoryBean getSqlSessionFactory(@Autowired DruidDataSource dataSource) {
SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
sessionFactoryBean.setDataSource(dataSource);
org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
configuration.addMappers("com.jt.dao");
sessionFactoryBean.setConfiguration(configuration);
return sessionFactoryBean;
}
/**
* 扫描dao包
*
* @return
*/
@Bean("mapperScannerConfigurer")
public MapperScannerConfigurer getMapperScannerConfigurer() {
MapperScannerConfigurer configurer = new MapperScannerConfigurer();
configurer.setBasePackage("com.jt.dao");
configurer.setSqlSessionFactoryBeanName("sqlSessionFactory");
return configurer;
}
}
2)config.properties文件如下driver=com.mysql.jdbc.Driver
url=jdbc:mysql:///cgbmybatis
uname=root
password=root 3)创建完成以后进行junit测试package test;
import java.sql.SQLException;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import com.alibaba.druid.pool.DruidDataSource;
import com.jt.config.AppRootConfig;
public class Test1 {
private AnnotationConfigApplicationContext context;
@Before
public void init() {
context = new AnnotationConfigApplicationContext(AppRootConfig.class);
}
@Test
public void text1() throws SQLException {
DruidDataSource bean = context.getBean("dataSource",DruidDataSource.class);
System.out.println(bean.getConnection());
}
@Test
public void text2() throws SQLException {
SqlSessionFactory factoryBean = context.getBean("sqlSessionFactory",SqlSessionFactory.class);
System.out.println(factoryBean);
}
@After
public void close() {
context.close();
}
}
3. 整合SSM 框架 并进行测试
1)创建实体(Blog)以及dao和service的接口和实现类
a. Blog实体类
package com.jt.entity;
import java.io.Serializable;
import java.util.Date;
/**
* Blog实体类
*/
public class Blog implements Serializable {
private static final long serialVersionUID = 1L;
public Integer id;
public String title;
public String content;
public Date createdTime;
public String authorId;
public Blog() {
super();
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public Date getCreatedTime() {
return createdTime;
}
public void setCreatedTime(Date createdTime) {
this.createdTime = createdTime;
}
public String getAuthorId() {
return authorId;
}
public void setAuthorId(String authorId) {
this.authorId = authorId;
}
@Override
public String toString() {
return "Blog [id=" + id + ", title=" + title + ", content=" + content + ", createdTime=" + createdTime
+ ", authorId=" + authorId + "]";
}
} b. dao接口package com.jt.dao;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import com.jt.entity.Blog;
public interface BlogDao {
/**
* 分页查询方法
*/
@Select("select * from blog limit #{startIndex},#{pageSize}")
public List<Blog> findPageBlogs(@Param("startIndex") Integer startIndex,@Param("pageSize") Integer pageSize);
}
c. service接口和它的实现类package com.jt.service;
import java.util.List;
import com.jt.entity.Blog;
public interface BlogService {
/**
*
* @param pageCurrent 当前页的页码值
* @return
*/
public List<Blog> findPageBlogs(Integer pageCurrent);
}
package com.jt.service.impl; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.jt.dao.BlogDao; import com.jt.entity.Blog; import com.jt.service.BlogService; @Service public class BlogServiceImpl implements BlogService { @Autowired private BlogDao blogDao; @Override public List<Blog> findPageBlogs(Integer pageCurrent) { int pageSize =3; int startIndex =(pageCurrent-1)*pageSize; return blogDao.findPageBlogs(startIndex, pageSize); } }d. controller控制层package com.jt.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.jt.entity.Blog;
import com.jt.service.BlogService;
@Controller
@RequestMapping("/blog")
public class BlogController {
@Autowired
private BlogService blogservice;
@RequestMapping("blogUI.do")
@ResponseBody
public List<Blog> blogUI(Integer pageCurrent) {
blogservice.findPageBlogs(pageCurrent);
return blogservice.findPageBlogs(pageCurrent);
}
}
4. 进行测试
5.备注
1)数据库结构
CREATE TABLE `blog` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(200) NOT NULL,
`content` varchar(500) NOT NULL,
`createdTime` date DEFAULT NULL,
`authorId` varchar(500) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8; 2)如果返回一个视图需要在AppServletConfig这个类 重写这个方法 /**
* 访问视图路径
*/
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
registry.jsp("/WEB-INF/pages/", ".jsp");
}
相关文章推荐
- SSM框架注解整合
- SSM框架注解整合
- 16、SSM框架-Spring mvc基于注解的配置(3)
- 基于IdeaIDE的ssm整合框架的maven管理项目,利用映射自动生成dao层,pojo层,mappers层
- 基于IdeaIDE的ssm整合框架的maven管理项目,利用映射自动生成dao层,pojo层,mappers层
- Spring-Struts2两大框架整合过程介绍(基于注解方式)
- 基于Maven的SSM框架整合(Spring+SpringMVC+MyBatis)
- SSM框架详细整合教程(基于Maven)
- 基于IdeaIDE的ssm整合框架的maven管理项目,利用映射自动生成dao层,pojo层,mappers层
- 基于IdeaIDE的ssm整合框架的maven管理项目,利用映射自动生成dao层,pojo层,mappers层
- 基于ssm框架的个人博客(2)--基于maven的ssm框架的整合
- idea中搭建基于maven的ssm整合框架
- 基于IdeaIDE的ssm整合框架的maven管理项目,利用映射自动生成dao层,pojo层,mappers层
- 基于IdeaIDE的ssm整合框架的maven管理项目,利用映射自动生成dao层,pojo层,mappers层
- intellij idea基于maven整合SSM框架初体验
- SSM简单整合(Mybatis,Spring,SpringMVC,基于注解和xml文件配置)
- 基于IdeaIDE的ssm整合框架的maven管理项目,利用映射自动生成dao层,pojo层,mappers层
- 基于IdeaIDE的ssm整合框架的maven管理项目,利用映射自动生成dao层,pojo层,mappers层
- SSM基于注解配置Spring4.1.6、springMVC4.1.6、mybatis3.2.8的maven框架搭建
- SSM框架项目搭建系列(七)—Spring AOP之基于注解的声明式AspectJ