- 项目搭建环境: windows系统
- 服务器:Tomcat 9.0
- 项目运行环境:JDK1.8
- 数据库:Mysql 8.0.27
- 构建管理工具:Maven
- 开发工具:IntelliJ IDEA
1、搭建maven工程
点击Next,然后给项目取名字,完成创建。
2、添加项目依赖
1、打包方式(war)
<packaging>war</packaging>
2、依赖配置
注意:数据库配置的版本要对应起来
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.13</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.16</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</dependency>
</dependencies>
3、build搭建
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
<configuration>
<port>80</port>
<path>/</path>
</configuration>
</plugin>
</plugins>
</build>
3、项目整体结构
- config:项目相关配置类
- controller:项目控制Cotroller类
- pojo:实体类对象
- service:Service接口类
- service/impl:Service实现类
- resources:资源管理
- test:测试
4、SpringConfig类
@ComponentScan:根据定义的扫描路径,将符合扫描规则的类装配到spring容器中
package com.yk.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@Configuration
@ComponentScan({"com.yk.service"})
@Import({JdbcConfig.class, MyBatisConfig.class})
@EnableTransactionManagement
public class SpringConfig {
}
5、JdbcConfig类
package com.yk.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
import javax.sql.DataSource;
public class JdbcConfig {
@Bean
public DataSource dataSource(){
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/ssmbuild?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT");
dataSource.setUsername("root");
dataSource.setPassword("?????");
return dataSource;
}
@Bean
public PlatformTransactionManager transactionManager(DataSource dataSource){
DataSourceTransactionManager ds = new DataSourceTransactionManager();
ds.setDataSource(dataSource);
return ds;
}
}
6、MybatisConfig
package com.yk.config;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.context.annotation.Bean;
import javax.sql.DataSource;
public class MyBatisConfig {
@Bean
public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource){
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dataSource);
factoryBean.setTypeAliasesPackage("com.yk.dao");
return factoryBean;
}
@Bean
public MapperScannerConfigurer mapperScannerConfigurer(){
MapperScannerConfigurer msc = new MapperScannerConfigurer();
msc.setBasePackage("com.yk.dao");
return msc;
}
}
7、SpringMvc类
package com.yk.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
@Configuration
@ComponentScan({"com.yk.controller","com.yk.config"})
@EnableWebMvc
public class SpringMvcConfig {
}
8、Web项目入口配置类
package com.yk.config;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class ServletConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[]{SpringConfig.class};
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[]{SpringMvcConfig.class};
}
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
}
9、功能模块
(1)创建数据库及表
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fdauKdJ8-1651569539975)(F:\typora图\image-20220503163402764.png)]
(2)编写模型类
package com.yk.pojo;
public class Books {
private int bookID;
private String bookName;
private int bookCounts;
private String detail;
public Books() {
}
public Books(int bookID, String bookName, int bookCounts, String detail) {
this.bookID = bookID;
this.bookName = bookName;
this.bookCounts = bookCounts;
this.detail = detail;
}
public int getBookID() {
return bookID;
}
public void setBookID(int bookID) {
this.bookID = bookID;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public int getBookCounts() {
return bookCounts;
}
public void setBookCounts(int bookCounts) {
this.bookCounts = bookCounts;
}
public String getDetail() {
return detail;
}
public void setDetail(String detail) {
this.detail = detail;
}
@Override
public String toString() {
return "Books{" +
"bookID=" + bookID +
", bookName='" + bookName + '\'' +
", bookCounts=" + bookCounts +
", detail='" + detail + '\'' +
'}';
}
}
(3)dao接口
package com.yk.dao;
import com.yk.pojo.Books;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import java.awt.print.Book;
import java.util.List;
public interface BookDao {
//增加一个Book
@Insert("insert into books values (null,#{bookName}, #{bookCounts}, #{detail})")
public void addBook(Book book);
//根据id删除一个Book
@Delete("delete from ssmbuild.books where bookID=#{id}")
public void deleteBookById(int id);
//更新Book
@Update("update books set bookName = #{bookName},bookCounts = #{bookCounts},detail = #{detail} where bookID = #{bookID}")
public void updateBook(Books books);
//根据id查询,返回一个Book
@Select("select * from books where bookID = #{id}")
public Books queryBookById(int id);
//查询全部Book,返回list集合
@Select("select * from books")
public List<Books> queryAllBook();
}
(4)Service接口和实现类
package com.yk.service;
import com.yk.pojo.Books;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Transactional
public interface BookService {
//增加一个Book
public Boolean addBook(Books books);
//根据id删除一个Book
public Boolean deleteBookById(int id);
//更新Book
public Boolean updateBook(Books books);
//根据id查询,返回一个Book
public Books queryBookById(int id);
//查询全部Book,返回list集合
public List<Books> queryAllBook();
}
package com.yk.service.impl;
import com.yk.controller.Code;
import com.yk.dao.BookDao;
import com.yk.exception.BusinessException;
import com.yk.exception.SystemException;
import com.yk.pojo.Books;
import com.yk.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class BookServiceImpl implements BookService {
//调用dao层的操作,设置一个set接口,方便Spring管理
@Autowired
private BookDao bookDao;
public Boolean addBook(Books book) {
bookDao.addBook(book);
return true;
}
public Boolean deleteBookById(int id) {
bookDao.deleteBookById(id);
return true;
}
public Boolean updateBook(Books books) {
bookDao.updateBook(books);
return true;
}
public Books queryBookById(int id) {
return bookDao.queryBookById(id);
}
public List<Books> queryAllBook() {
return bookDao.queryAllBook();
}
}
(5)Controller类
10、测试
文章内容来自黑马程序员!!!