学习视频:【编程不良人】2021年SpringBoot最新最全教程
Spring + SpringMVC + Mybatis SSM 实现一个简单功能 员工添加、查询…
项目
需求分析 —>概要设计 —>(库表设计) —> 详细设计 —>(验证库表正确性) —> 编码(环境搭建+业务代码)—>测试 —>部署上线
这是一般整个项目的开发步骤,但是我们选择简单项目实现
功能:员工添加、查询所有
选择mysql数据库,库:ssm,表:emp,字段:id name birthday salary
编码
sql建库建表
create DATABASE ssm;
use ssm;
create TABLE emp(
id int(11) auto_increment PRIMARY KEY,
name VARCHAR(40),
birthday TIMESTAMP,
salary DOUBLE
)
环境搭建 引入依赖
<dependencies>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.11version>
<scope>testscope>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-contextartifactId>
<version>5.3.6version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-context-supportartifactId>
<version>5.3.6version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-aopartifactId>
<version>5.3.6version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-jdbcartifactId>
<version>5.3.6version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-coreartifactId>
<version>5.3.6version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-webartifactId>
<version>5.3.6version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-webmvcartifactId>
<version>5.3.6version>
dependency>
<dependency>
<groupId>org.mybatisgroupId>
<artifactId>mybatisartifactId>
<version>3.5.9version>
dependency>
<dependency>
<groupId>org.mybatisgroupId>
<artifactId>mybatis-springartifactId>
<version>3.0.0version>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>5.1.47version>
dependency>
<dependency>
<groupId>com.alibabagroupId>
<artifactId>druidartifactId>
<version>1.1.19version>
dependency>
<dependency>
<groupId>org.aspectjgroupId>
<artifactId>aspectjrtartifactId>
<version>1.8.8version>
dependency>
<dependency>
<groupId>org.aspectjgroupId>
<artifactId>aspectjweaverartifactId>
<version>1.8.3version>
dependency>
<dependency>
<groupId>com.fasterxml.jackson.coregroupId>
<artifactId>jackson-databindartifactId>
<version>2.14.2version>
dependency>
dependencies>
spring.xml
<context:component-scan base-package="com.baizhi.service"/>
<bean class="com.alibaba.druid.pool.DruidDataSource" id="dataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/ssm?characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
bean>
<bean class="org.mybatis.spring.SqlSessionFactoryBean" id="sqlSessionFactory">
<property name="dataSource" ref="dataSource"/>
<property name="mapperLocations" value="classpath:com.baizhi.mapper/*.xml"/>
<property name="typeAliasesPackage" value="com.baizhi.entity"/>
bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
<property name="basePackage" value="com.baizhi.dao"/>
bean>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
bean>
<tx:annotation-driven/>
Mapper配置文件
<insert id="save" parameterType="Emp" useGeneratedKeys="true" keyProperty="id">
INSERT into emp values(#{id},#{name},#{birthday},#{salary})
insert>
<select id="findAll" resultType="com.baizhi.entity.Emp">
select id,name,birthday,salary from emp
select>
@Service
@Transactional
public class EmpServiceImpl implements EmpService {
private final EmpDAO empDAO;
@Autowired
public EmpServiceImpl(EmpDAO empDAO) {
this.empDAO = empDAO;
}
@Override
public void save(Emp emp) {
empDAO.save(emp);
}
@Override
public List<Emp> findAll() {
return empDAO.findAll();
}
}
一步一步来,先测试Spring+Mybatis:
public class TestEmpServiceImpl {
public static void main(String[] args) {
//1.运行工厂
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
//2.工厂中获取对象
EmpService empService = (EmpService) context.getBean("empServiceImpl");
empService.save(new Emp(null, "小米", new Date(), 44.564));
//3.调用方法
empService.findAll().forEach(emp -> System.out.println(emp));
}
}
可以正常执行,进入下一步mvc的整合,springmvc.xml
<context:component-scan base-package="com.baizhi.controller"/>
<mvc:annotation-driven/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"/>
<property name="suffix" value=".jsp"/>
bean>
web.xml
<context-param>
<param-name>contextConfigLocationparam-name>
<param-value>classpath:spring.xmlparam-value>
context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
listener>
<servlet>
<servlet-name>springmvcservlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
<init-param>
<param-name>contextConfigLocationparam-name>
<param-value>classpath:springmvc.xmlparam-value>
init-param>
servlet>
<servlet-mapping>
<servlet-name>springmvcservlet-name>
<url-pattern>/url-pattern>
servlet-mapping>
控制器
@RestController //代表类中返回值转为json响应到浏览器
public class EmpController {
private final EmpService empService;
@Autowired
public EmpController(EmpService empService) {
this.empService = empService;
}
//保存
@RequestMapping("save")
public void save(Emp emp) {
empService.save(emp);
}
//查询所有
@RequestMapping("findAll")
public List<Emp> findAll() {
return empService.findAll();
}
}
测试结果,可以正常添加和查询所有
Spring Boot是由Pivotal团队提供的一套开源框架,Spring Boot的目标是让开发者更多地关注业务特性。它通过自动配置来简化开发流程,例如,当检测到Spring MVC在类路径上时,Spring Boot会自动添加必要的bean,该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。
Spring Boot 作用:简化Spring应用初始搭建和开发过程
如何简化:开发使用SpringBoot只要基于特定方式进行配置,就可以简化Spring使用
SpringBoot 微框架:5分钟完成之前ssm中的项目搭建,大大提高开发效率
SpringBoot (微框架)= SpringMVC(控制器) + Spring core(项目管理)
Application
或 Main
,并且使用 @SpringBootApplication
注解进行标记。下一章:Spring Boot学习随笔-第一个SpringBoot项目快速启动(org.springframework.boot、@SpringBootApplication、application.yml)