建设网站需要什么基础知识,莆田网站开发公司电话,阿里云万网域名购买,青岛房地产网站建设SSM框架是Spring、Spring MVC和MyBatis三个开源框架的整合#xff0c;常用于构建数据源较简单的web项目。该框架是Java EE企业级开发的主流技术#xff0c;也是每一个java开发者必备的技能。下面通过查询书籍列表的案例演示SSM整合的过程.
新建项目 创建文件目录 完整文件结…SSM框架是Spring、Spring MVC和MyBatis三个开源框架的整合常用于构建数据源较简单的web项目。该框架是Java EE企业级开发的主流技术也是每一个java开发者必备的技能。下面通过查询书籍列表的案例演示SSM整合的过程.
新建项目 创建文件目录 完整文件结构 引入依赖 dependencygroupIdjavax.servlet/groupIdartifactIdjavax.servlet-api/artifactIdversion4.0.1/versionscopeprovided/scope/dependency!--spring和springMVC环境依赖--dependencygroupIdorg.springframework/groupIdartifactIdspring-webmvc/artifactIdversion5.2.18.RELEASE/version/dependency!--servlet依赖--dependencygroupIdjavax.servlet/groupIdartifactIdjavax.servlet-api/artifactIdversion3.1.0/versionscopeprovided/scope/dependency!--spring事务管理依赖--dependencygroupIdorg.springframework/groupIdartifactIdspring-jdbc/artifactIdversion5.2.18.RELEASE/version/dependency!--mybatis依赖--dependencygroupIdorg.mybatis/groupIdartifactIdmybatis/artifactIdversion3.5.6/version/dependency!--spring整合mybatis依赖--dependencygroupIdorg.mybatis/groupIdartifactIdmybatis-spring/artifactIdversion2.0.6/version/dependency!--spring整合数据源依赖--dependencygroupIdcom.alibaba/groupIdartifactIddruid/artifactIdversion1.2.6/version/dependency!--mysql数据库连接--dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion5.1.38/version/dependency!--spring整合Junit依赖--dependencygroupIdorg.springframework/groupIdartifactIdspring-test/artifactIdversion5.2.18.RELEASE/versionscopetest/scope/dependencydependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/versionscopetest/scope/dependency!--lombok插件--dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.16.10/version/dependency!--日志支持--dependencygroupIdlog4j/groupIdartifactIdlog4j/artifactIdversion1.2.17/version/dependencydependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-databind/artifactIdversion2.9.0/version/dependency
创建数据库表 jdbc属性文件
在resources目录下的props包中创建jdbc.properties文件 jdbc.driverClasscom.mysql.jdbc.Driver
jdbc.urljdbc:mysql://localhost:3306/mydb?useUnicodetruecharacterEncodingutf-8useSSLfalse
jdbc.usernameroot
jdbc.passwordmysqlpass
创建配置类
jdbcConfig
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;import javax.sql.DataSource;
Configuration
//加载资源路径
PropertySource(classpath:props/jdbc.properties)
public class JdbcConfig {Value(${jdbc.driverClass})private String driverClass;Value(${jdbc.username})private String username;Value(${jdbc.password})private String password;Value(${jdbc.url})private String url;/**配置Druid数据源*//**Bean将返回的dataSource标识为被Spring管理的bean对象*/Beanpublic DataSource dataSource(){DruidDataSource dataSource new DruidDataSource();dataSource.setDriverClassName(driverClass);dataSource.setUsername(username);dataSource.setPassword(password);dataSource.setUrl(url);return dataSource;}
}
MyBatisConfig
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;import javax.sql.DataSource;
import java.io.IOException;Configuration
Import(JdbcConfig.class)
public class MyBatisConfig {Beanpublic SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource) throws IOException {SqlSessionFactoryBean sessionFactoryBean new SqlSessionFactoryBean();sessionFactoryBean.setDataSource(dataSource);//加载全局配置文件Resource configResource new ClassPathResource(mybatis/mybatis-config.xml);sessionFactoryBean.setConfigLocation(configResource);//映射文件加载ResourcePatternResolver resourceResolver new PathMatchingResourcePatternResolver();sessionFactoryBean.setMapperLocations(resourceResolver.getResources(classpath*:mybatis/mapper/*Mapper.xml));return sessionFactoryBean;}Beanpublic MapperScannerConfigurer mapperScannerConfigurer(){MapperScannerConfigurer scannerConfigurer new MapperScannerConfigurer();//扫描mapper接口所在的包scannerConfigurer.setBasePackage(com.yaorange.ssm.mapper);return scannerConfigurer;}
}
SpringConfig
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;import javax.sql.DataSource;Configuration
//扫描业务类实现类所在的包
ComponentScan(com.yaorange.ssm.service.impl)
//加载MyBatisConfig和JdbcConfig配置类的字节码文件
Import({MyBatisConfig.class, JdbcConfig.class})
//开启事务管理器
EnableTransactionManagement
public class SpringConfig {Bean/**配置事务管理器*/public PlatformTransactionManager transactionManager(DataSource dataSource){DataSourceTransactionManager transactionManager new DataSourceTransactionManager();transactionManager.setDataSource(dataSource);return transactionManager;}
}
SpringMvcConfig
Configuration
//扫描controller所在的包
ComponentScan(com.yaorange.ssm.controller)
EnableWebMvc
public class SpringMvcConfig {
}
ServletConfig配置类(用于加载Spring和SpringMVC配置类) import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;public class ServletConfig extends AbstractAnnotationConfigDispatcherServletInitializer {Override/**加载Spring配置,创建Spring容器*/protected Class?[] getRootConfigClasses() {return new Class[] {SpringConfig.class};}Override/**加载SpringMVC配置,创建SpringMVC容器*/protected Class?[] getServletConfigClasses() {return new Class[] {SpringMvcConfig.class};}Overrideprotected String[] getServletMappings() {//所有请求都交给SpringMVC处理return new String[] {/};}
}
功能模块开发
数据层开发
Book实体类
Data
public class Books implements Serializable {/*** 书籍编号*/private Integer bId;/*** 书籍名称*/private String bName;/*** 作者*/private String authers;/*** 价格*/private BigDecimal price;/*** 出版年份*/private Object pubdate;/*** 备注*/private String note;/*** 数量*/private Integer num;}
mapper层BookMapper接口
public interface BooksMapper { /**查询所有书籍*/ListBooks selectAll();
}BookMapper.xml
?xml version1.0 encodingUTF-8?
!DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespacecom.yaorange.ssm.mapper.BooksMapperresultMap idBaseResultMap typecom.yaorange.ssm.entity.Booksid propertybId columnb_id jdbcTypeINTEGER/result propertybName columnb_name jdbcTypeVARCHAR/result propertyauthers columnauthers jdbcTypeVARCHAR/result propertyprice columnPrice jdbcTypeDECIMAL/result propertypubdate columnpubdate jdbcTypeOTHER/result propertynote columnnote jdbcTypeVARCHAR/result propertynum columnnum jdbcTypeINTEGER//resultMapsql idBase_Column_Listb_id,b_name,authers,Price,pubdate,note,num/sqlselect idselectAll resultMapBaseResultMapSELECTinclude refidBase_Column_List/FROMbooks/select/mapper
业务层开发
BookService接口
public interface BookService {ListBooks selectAll();
}
BookServiceImpl实现类
Service
//开启事务管理
Transactional(rollbackFor Exception.class)
public class BookServiceImpl implements BookService {Autowiredprivate BooksMapper booksMapper;Overridepublic ListBooks selectAll() {return booksMapper.selectAll();}
}
控制层开发
Controller
ResponseBody
//根路径
RequestMapping(/book)
public class BookController {Autowiredprivate BookService bookService;RequestMapping(/list)public Result selectAll(){ListBooks books bookService.selectAll();return Result.ok(books);}
}
common包中的响应结果类和响应码常量 修改Tomcat中的访问路径 将多余的删除后点击apply /**定义响应结果类*/
Data
public class Result {//响应码private int code;//响应信息private String msg;//响应数据private Object data;public Result(int code, String msg) {this.code code;this.msg msg;}public Result(int code, String msg, Object data) {this.code code;this.msg msg;this.data data;}public Result(String msg, Object data) {this.msg msg;this.data data;}public Result(Object data) {this.data data;}public static Result success (){return new Result(HttpCode.SUCCESS_CODE,HttpMsg.SYS_OK_MSG);}public static Result ok(Object data){return new Result(data);}public static Result ok(String msg,Object data){return new Result(msg, data);}
}
public interface HttpCode {//成功响应码int SUCCESS_CODE200;//失败响应码int ERROR_CODE500;
}
public class HttpMsg {public static final String SYS_ERROR_MSG操作失败;public static final String SYS_OK_MSG操作成功;
}
postman接口测试结果