栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SSM框架整合练习

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SSM框架整合练习

SSM框架整合

MybatisSpring层SpringMVC层查询所有书籍增加书籍修改书籍删除书籍根据名字查询书籍

Mybatis

1. 创建数据库

CREATE DATAbase `ssmbuild`;

USE `ssmbuild`;

CREATE TABLE `books` (
	`bookID` int(10) NOT NULL AUTO_INCREMENT COMMENT '书id',
	`bookName` varchar(100) not null COMMENT '书名',
	`bookCounts` int(11) not null COMMENT '数量',
	`detail` VARCHAr(200) not null COMMENT '描述',
	KEY `bookID` (`bookID`)
) ENGINE=INNODB DEFAULT CHARSET=utf8

insert into `books`(`bookID`,`bookName`,`bookCounts`,`detail`) VALUES
(1, 'Java', 1, '从入门到放弃'),
(2, 'MySql', 10, '从删库到跑路'),
(3, 'Linux', 5, '从进门到进牢');

2. 导入依赖


    
        junit
        junit
        4.12
        test
    
    
        mysql
        mysql-connector-java
        5.1.47
    
    
    
        com.mchange
        c3p0
        0.9.5.3
    
    
        javax.servlet
        servlet-api
        2.5
    
    
        javax.servlet.jsp
        jsp-api
        2.2
    
    
        javax.servlet
        jstl
        1.2
    
    
        org.mybatis
        mybatis
        3.4.5
    
    
        org.mybatis
        mybatis-spring
        1.3.3
    
    
        org.springframework
        spring-webmvc
        5.1.9.RELEASE
    
    
    
        org.springframework
        spring-webmvc
        5.1.9.RELEASE
    
    
        org.springframework
        spring-jdbc
        5.1.9.RELEASE
    




    
        
            src/main/resources
            
                ***.xml
            
            true
        
        
            src/main/java
            
                ***.xml
            
            true
        
    

3. idea连接数据库

4. 创建包和配置文件
mybatis-config.xml:




    

applicationContext.xml:





5. 创建实体类、在dao层创建“接口”和“mapper.xml”

public class Books {
    private int bookID;
    private String bookName;
    private int bookCounts;
    private String detail;
public interface BookMapper {
    //增加一本书
    int addBook(Books books);
    //删除一本书
    int deleteBook(@Param("bookId") int id);
    //更新一本书
    int updateBook(Books books);
    //查询一本书
    Books selectBook(@Param("bookId") int id);
    //查询全部的书
    List listBooks();
}

6. 在mybatis-config.xml中注册mapper


    
        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
    

7. 在mybatis-config.xml中注册mapper
这里配置数据源的操作,交给Spring去做。



    
        
    
    
    
        
    


8. 在service包下,创建接口

public interface BookService {
    //增加一本书
    int addBook(Books books);
    //删除一本书
    int deleteBook(int id);
    //更新一本书
    int updateBook(Books books);
    //查询一本书
    Books selectBook(int id);
    //查询全部的书
    List listBooks();
}

实现接口(service层调用dao层)

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 deleteBook(int id) {
        return bookMapper.deleteBook(id);
    }

    @Override
    public int updateBook(Books books) {
        return bookMapper.updateBook(books);
    }

    @Override
    public Books selectBook(int id) {
        return bookMapper.selectBook(id);
    }

    @Override
    public List listBooks() {
        return bookMapper.listBooks();
    }
}
Spring层

1. 创建spring-dao.xml,
这里连接池不使用jdbc,使用c3p0。





    
    
    
    




    
    
    




    
    
    
    


这里 第四步 和原来的方法不一样,之前使用的SqlSessionTemplate
然后还要写一个实现类,因为SqlSessionFactory通过Spring注入了,所以需要增加一个实现类拿到SqlSession。
再通过bean将实现类注入到Spring容器管理。

这里使用的MapperScannerConfigurer,好处是不用写实现类了,也不用bean注册实现类了。

2. 创建spring-service.xml





    




    
    



Spring就是整合dao和service。

SpringMVC层

1. 添加web支持
2. 写 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

3. 创建配置文件spring-mvc.xml








    
    

最后,将配置文件整合到applicationContext.xml中,方便管理。




查询所有书籍

后台:controller访问到数据,返回给前端展示

@Controller
@RequestMapping("/book")
public class BookController {
    @Autowired
    @Qualifier("BookServiceImpl")
    //private BookService bookService = new BookServiceImpl()
    private BookService bookService;

    @RequestMapping("/allBook")
    public String list(Model model) {
        List books = bookService.listBooks();
        model.addAttribute("books",books);
        return "allBook";
    }
}
首页:index.jsp

    首页
      
          a{
              text-decoration: none;
              color: black;
              font-size: 18px;
          }
          h3{
              width: 180px;
              height: 38px;
              margin: 100px auto;
              text-align: center;
              line-height: 38px;
              background: deeppink;
              border-radius: 5px;
          }
      
  
  
      
        进入书籍页面
      
  
书籍展示界面
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

书籍展示




	
	    
	        
	            
	                
	                    书籍列表 ———— 显示所有书籍
	                
	            
	        
	    
	
	    
	        
	            
	                <%-- 书籍从数据库中查询出来,从list中遍历出来 --%>
	                
	                    
书籍编号 书籍名称 书籍数量 书籍详情
${book.bookID} ${book.bookName} ${book.bookCounts} ${book.detail}
增加书籍

1. 在显示所有书籍页面中,增加一个超链接,点击跳转到添加书籍的表单页面


2. 加一个controller:toAddBookPage。可以跳转到添加书籍页面

//增加书籍
@RequestMapping("/toAddBook")
public String toAddBookPaper() {
    return "addBook";
}

3. 写一个jsp页面:addBook.jsp

4. 将要添加的书籍,存入数据库。再写一个controller

//添加书籍请求
@RequestMapping("/addBook")
public String addBook(Books books) {
    bookService.addBook(books);
    return "redirect:/book/allBook"; //添加完,跳转回查询所有书籍页面
}
修改书籍

1. 在显示所有书籍的表格中,增加一列表格


    修改

2. 写一个controller,跳转到修改书籍页面

@RequestMapping("/toUpdate")
public String toUpdatePage(int id,Model model) {
    Books books = bookService.selectBook(id);
    model.addAttribute("QBook", books);
    return "updateBook";
}

3. 写一个jsp页面,要有数据回显

4. 再写一个controller,修改数据库中的数据,再查询数据到页面上

//修改书籍请求
@RequestMapping("/updateBook")
public String updateBook(Books books,Model model) {
    bookService.updateBook(books);
    return "redirect:/book/allBook";
}

注意:在修改书籍的jsp中,要写隐藏域传递id。因为我们在第一步传递了id,让controller通过id查询到这条数据,然后再跳转到jsp页面,这时jsp页面中是没有第一步所传递的id的。但是我们第四步的controller是要根据id来修改数据的,所以要在表单中增加一个隐藏域,将id也传递到controller,controller就能根据id修改数据了。

删除书籍

1. 在修改书籍的超链接下,加一个删除的超链接。这里传递参数用的RestFul风格


   删除

2. 写一个controller

//删除书籍
@RequestMapping("/deleteBook/{bookId}") //RestFul风格
public String deleteBook(@PathVariable("bookId") int id) {
    bookService.deleteBook(id);
    return "redirect:/book/allBook";
}

3. 建议在删除的超链接上加一个Javascript,提示是否删除

根据名字查询书籍

1. dao层,接口

Books queryBookByName(@Param("bookName") String bookName);

mapper.xml


2. service层,写接口和实现类

Books queryBookByName(String bookName);

@Override
public Books queryBookByName(String bookName) {
    return bookMapper.queryBookByName(bookName);
}

3. controller层

//根据名字查询书籍
@RequestMapping("/queryBook")
public String queryBook(String queryBookName, Model model) {
    Books books = bookService.queryBookByName(queryBookName);
    List list = new ArrayList();
    list.add(books);
    if(books == null) {
        list = bookService.listBooks();
        model.addAttribute("error","未查到");
    }
    model.addAttribute("list",list);
    return "allBook";
}

4. 展示书籍页面

${error}

前端:Bootstrap可视化布局

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/777753.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号