SSM框架整合
一、idea创建项目
1.创建普通的maven项目然后next
建完之后的第一件大事就是项目改成UTF-8编码:
2.maven导入相关的pom依赖
pom.xml:
junit
junit
4.13.2
mysql
mysql-connector-java
8.0.24
com.mchange
c3p0
0.9.5.2
javax.servlet
servlet-api
2.5
javax.servlet.jsp
jsp-api
2.2
javax.servlet
jstl
1.2
org.mybatis
mybatis
3.5.7
org.mybatis
mybatis-spring
2.0.6
org.springframework
spring-webmvc
5.3.6
org.springframework
spring-jdbc
5.3.6
org.projectlombok
lombok
1.18.20
com.fasterxml.jackson.core
jackson-databind
2.12.3
org.aspectj
aspectjweaver
1.9.6
log4j
log4j
1.2.17
如果是连Oracle数据库的话,直接把数据库驱动的依赖换掉就行了:
com.oracle
ojdbc6
11.2.0.3
3.maven资源过滤设置
pom.xml:
src/main/resources
**/*.properties
**/*.xml
true
src/main/java
**/*.properties
**/*.xml
true
二、连接数据库、创建配置文件
连接数据库:
创建文件:
创建mybatis-config.xml:
创建applicationContext.xml:
applicationContext.xml是spring的配置文件,可以通过以下进行查看引入的配置文件:
创建database.properties:
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssmbuild?useSSL=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
jdbc.username=root
jdbc.password=填你自个的密码
其中 ssmbuild
是数据库名,切记要改!!!
如果是oracle数据库:
jdbc.driver=oracle.jdbc.OracleDriver
jdbc.url=jdbc:oracle:thin:@localhost:1521:XE
jdbc.username=system
jdbc.password=填你自个的
三、Mybatis层
mybatis-config.xml中增加配置:
1. 创建实体类
pojo下按照数据库的表创建实体类 Books
:
package com.huang.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Books {
private int bookID;
private String bookName;
private int bookCounts;
private String detail;
}
其中引入了偷懒神器lombok:
@Data //相当于下图 Getter and Setter
@AllArgsConstructor //相当于下图 Constructor 有参构造
@NoArgsConstructor //相当于无参构造
‘Alt’+’Insert’键呼出如下图:
查看引入的效果:
2.创建dao接口
在dao下创建BookMapper接口类,并增加需要的增删改查操作:
package com.huang.dao;
import com.huang.pojo.Books;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface BookMapper {
//增加一本书
int addBook(Books books);
//按ID删除
int deleteBookById(@Param("bookID") int id);
//按ID修改
int updateBook(Books books);
//按ID查询
Books selectBookById(@Param("bookID") int id);
//查询所有
List selectAllBook();
//按Name查询
Books selectBookByName(@Param("bookName") String bookName);
}
然后在dao下创建BookMapper.xml写入相关的操作sql语句:
insert into ssmbuild.books(bookName,bookCounts,detail)
values(#{bookName},#{bookCounts},#{detail});
delete from ssmbuild.books where bookID = #{bookID};
update ssmbuild.books
set bookName=#{bookName},bookCounts=#{bookCounts},detail=#{detail}
where bookID=#{bookID};
select * from ssmbuild.books
where bookID=#{bookID};
select * from ssmbuild.books;
select * from ssmbuild.books where bookName=#{bookName};
如果是oracle数据库,相关的操作sql语句则和mysql稍微有点不同:
insert into "books"("bookName","bookCounts","detail")
values(#{bookName},#{bookCounts},#{detail})
delete from "books" where "bookID" = #{bookID}
update "books"
set "bookName"=#{bookName},"bookCounts"=#{bookCounts},"detail"=#{detail}
where "bookID"=#{bookID}
select * from "books"
where "bookID"=#{bookID}
select * from "books"
select * from "books" where "bookName"=#{bookName}
然后需要把xml文件绑定到mybatis-config.xml配置文件中:
如果mapper文件和接口的名字不一样,可以用resource引入
3.创建业务层service
service下创建BookService接口:
package com.huang.service;
import com.huang.pojo.Books;
import java.util.List;
public interface BookService {
//增加一本书
int addBook(Books books);
//按ID删除
int deleteBookById(int id);
//按ID修改
int updateBook(Books books);
//按ID查询
Books selectBookById(int id);
//查询所有
List selectAllBook();
//按Name查询
Books selectBookByName(String bookName);
}
service下创建接口的实现类BookServiceImpl类:
然后调用接口类,加上 implements BookService
, 'Alt'+'Enter'
呼出上图所示选择框,选择 Implement methods
继承接口类的所有方法:
package com.huang.service;
import com.huang.pojo.Books;
import java.util.List;
public class BookServiceImpl implements BookService{
@Override
public int addBook(Books books) {
return 0;
}
@Override
public int deleteBookById(int id) {
return 0;
}
@Override
public int updateBook(Books books) {
return 0;
}
@Override
public Books selectBookById(int id) {
return null;
}
@Override
public List selectAllBook() {
return null;
}
@Override
public Books selectBookByName(String bookName) {
return null;
}
}
service要调dao层,所以要组合dao,在类里面加上:
private BookMapper bookMapper;
然后增加它的set方法:
public void setBookMapper(BookMapper bookMapper) {
this.bookMapper = bookMapper;
}
然后就可以调用dao层,以addBook业务为例:
@Override
public int addBook(Books books) {
return bookMapper.addBook(books);
}
全部改完之后,BookServiceImpl类长这个样子:
package com.huang.service;
import com.huang.dao.BookMapper;
import com.huang.pojo.Books;
import java.util.List;
public class BookServiceImpl implements BookService{
private BookMapper bookMapper;
public void setBookMapper(BookMapper bookMapper) {
this.bookMapper = bookMapper;
}
@Override
public int addBook(Books books) {
return bookMapper.addBook(books);
}
@Override
public int deleteBookById(int id) {
return bookMapper.deleteBookById(id);
}
@Override
public int updateBook(Books books) {
return bookMapper.updateBook(books);
}
@Override
public Books selectBookById(int id) {
return bookMapper.selectBookById(id);
}
@Override
public List selectAllBook() {
return bookMapper.selectAllBook();
}
@Override
public Books selectBookByName(String bookName) {
return bookMapper.selectBookByName(bookName);
}
}
四、Spring层
1. 创建spring-dao.xml文件
前面已经创建了ApplicationContext,直接点添加:
1.关联数据库配置文件:
2.数据库连接池:
3.sqlSessionFactory配置:
4.配置dao接口扫描包:
2. 创建spring-service.xml文件
1.扫描service下的包:
2.将所有业务类注入到Spring:
如果爆红了,则applicationContext.xml中文件引入:
其实这个配置可以用注解代替:
3.声明式事务配置
最后spring-service.xml:
五、SpringMVC层
1. 将项目变成web项目
web.xml中增加:
springmvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:applicationContext.xml
1
springmvc
/
encodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
utf-8
encodingFilter
/*
15
另外在web.xml中加上:
login.jsp
可以指定默认打开的页面。
2. 创建spring-mvc.xml文件
spring-mvc.xml:
引入到总的applicationContext.xml文件中:
applicationContext.xml:
至此,基本的SSM框架已经全部搭建完成!!!
六、实现业务
在框架的基础上,让controller跟jsp交互起来就行了。
1. 创建BookController文件
在controller下创建BookController文件:
package com.huang.controller;
import com.huang.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/book")
public class BookController {
//controller 调 service 层
@Autowired
@Qualifier("BookServiceImpl")
private BookService bookService;
}
以上的 @Qualifier("BookServiceImpl")
只有在 四、2.2中加了配置而不是注解才能用。
BookController.java:
@Controller
@RequestMapping("/book")
public class BookController {
//controller 调 service 层
@Autowired
@Qualifier("BookServiceImpl")
private BookService bookService;
//查询全部书籍,并且返回到一个书籍展示页面
@RequestMapping("/allBook")
public String list(Model model) {
List books = bookService.selectAllBook();
model.addAttribute("books", books);
return "allBook";
}
}
2. 创建并配置jsp页面
当调用controller层 /book/allBook
时根据spring-mvc.xml中配置视图解析器:
我们可以知道return “allBook”;会跳转到 /WEB-INF/jsp/allBook.jsp
我们新建文件:
书籍展示
书籍展示
于是,我们在index.jsp中:
$Title$
进入书籍页面
点击a连接即可发出 /book/allBook
请求,启动tomcat9测试一下:
3. 遇到常见错误
然后一跑就报错: Artifact ssmbuild2:war exploded: Error during artifact deployment. See server log for details.
解决办法:
然后就发现多了一个lib里面有很多jar包:
然后再重新配tomcat就行:
最后,保证这些选项,文件结构更好看:
Original: https://www.cnblogs.com/BingweiHuang/p/15269467.html
Author: bwh
Title: SSM框架整合
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/685018/
转载文章受原作者版权保护。转载请注明原作者出处!