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

69-SSM整合

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

69-SSM整合

SSM整合
需求和步骤分析 : 需求 使用ssm框架完成对 account 表的增删改查操作 步骤分析:
 
环境搭建: 
准备数据库和表记录 : 
CREATE TABLE `account` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `name` varchar(32) DEFAULT NULL,
 `money` double DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
insert  into `account`(`id`,`name`,`money`) values (1,'tom',1000),
(2,'jerry',1000);
创建web项目: 编写mybatis在ssm环境中可以单独使用 需求:基于mybatis先来实现对account表的查询: 相关坐标 :


    mysql
    mysql-connector-java
    5.1.47


    
    com.alibaba
    druid
    1.1.15


    
    org.mybatis
    mybatis
    3.5.1


    
    junit
    junit
    4.12

Account实体 :
package com.lagou.domain;

public class Account {

    private Integer id;
    private String name;
    private Double money;

    @Override
    public String toString() {
        return "Account{" +
                "id=" + id +
                ", name='" + name + ''' +
                ", money=" + money +
                '}';
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Double getMoney() {
        return money;
    }

    public void setMoney(Double money) {
        this.money = money;
    }
}

AccountDao接口:
package com.lagou.dao;

import com.lagou.domain.Account;

import java.util.List;

public interface AccountDao {

    
    public List findAll();

}

AccountDao.xml映射 :




    
        select * from account


mybatis核心配置文件: jdbc.properties:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///spring_db?characterEncoding=utf8&useSSL=false
jdbc.username=root
jdbc.password=123456
SqlMapConfig.xml:





    


    

    


    
     
         
            
            
                
                
                
                
                
            
        
    
    
    

    
     


测试代码:
package com.lagou.text;

import com.lagou.dao.AccountDao;
import com.lagou.domain.Account;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;


public class MybatisTest {

    @Test
    public void testMybatis() throws IOException {

        InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        AccountDao mapper = sqlSession.getMapper(AccountDao.class);
        List all = mapper.findAll();
        for (Account account : all) {
            System.out.println(account);
        }
        sqlSession.close();
    }
}

编写spring在ssm环境中可以单独使用: 相关坐标:

        
            
             org.springframework
             spring-context
             5.1.5.RELEASE
        
        
            
             org.aspectj
             aspectjweaver
             1.8.13
        
        
            
             org.springframework
             spring-jdbc
             5.1.5.RELEASE
        
        
            
             org.springframework
             spring-tx
             5.1.5.RELEASE
        
        
            
             org.springframework
            spring-test
             5.1.5.RELEASE
        
AccountService接口:
package com.lagou.service;

import com.lagou.domain.Account;

import java.util.List;

public interface AccountService {


    public List findAll();

}

AccountServiceImpl实现 :
package com.lagou.service.imp;

import com.lagou.domain.Account;
import com.lagou.service.AccountService;
import java.util.List;

@Service
public class AccountServiceImpl implements AccountService {


    
    @Override
    public List findAll() {
        System.out.println("findAll执行了....");
        return null;
    }
}

spring核心配置文件: applicationContext.xml:



    


测试代码:
package com.lagou.text;

import com.lagou.service.AccountService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;


@RunWith(SpringJUnit4ClassRunner.class)
//要先有这个,才可以使用下面读取配置文件(类),否则出现空指针异常
@ContextConfiguration("classpath:applicationContext.xml")
public class SpringText {

    @Autowired
    private AccountService accountService;

    @Test
    public void testSpring() {
        accountService.findAll();
    }

}


spring整合mybatis: 整合思想: 将mybatis接口代理对象的创建权交给spring管理,我们就可以把dao的代理对象注入到service中 此时也就完成了spring与mybatis的整合了 导入整合包:


    
    org.mybatis
    mybatis-spring
    1.3.1

spring配置文件管理mybatis 注意:此时可以将mybatis主配置文件删除



    
    

    
   

    

    
    
        
        
        
        
    
    
    
    
        
        
        
        
        
        
    

    

    
        
        

    
    

    



修改AccountServiceImpl :
@Service
public class AccountServiceImpl implements AccountService {


    @Autowired
    private AccountDao accountDao;
    
    
    @Override
    public List findAll() {
        List all = accountDao.findAll();

        return all;
    }
}
编写springMVC在ssm环境中可以单独使用: 需求:访问到controller里面的方法查询所有账户,并跳转到list.jsp页面进行列表展示 相关坐标 :


    
    org.springframework
    spring-webmvc
    5.1.5.RELEASE


     
    javax.servlet
    javax.servlet-api
    3.1.0
    provided


    
    javax.servlet.jsp
    jsp-api
    2.2
    provided


    
    jstl
    jstl
    1.2

导入页面资源: 资源地址: 链接:https://pan.baidu.com/s/15MMY53jP7zxZaLb6pqFK5w 提取码:alsk 前端控制器DispathcerServlet:



    
    
        DispatcherServlet
        org.springframework.web.servlet.DispatcherServlet
        
            contextConfigLocation
            classpath:spring-mvc.xml
        
        2
    
    
        DispatcherServlet
        /
    


    
    
        CharacterEncodingFilter
        org.springframework.web.filter.CharacterEncodingFilter
        
            encoding
            UTF-8
        
    
    
        CharacterEncodingFilter
        
spring配置声明式事务: spring配置文件加入声明式事务,以及去修改对应类 :

    
    
        
    

    
    
@Service
@Transactional
public class AccountServiceImpl implements AccountService {
}
部分add.jsp:
  
添加方法到AccountController:
@RequestMapping("/save")
    public String save(Account account){

        accountService.save(account);
        // 跳转到findAll方法从新查询一次数据库进行数据的遍历展示
        return "redirect:/account/findAll";
    }
添加方法到AccountService接口和实现类:
 void save(Account account);
 
    @Override
    public void save(Account account) {

        accountDao.save(account);

    }
添加方法到AccountDao:
 void save(Account account);
添加对应AccountDao.xml映射 :
 
    
        insert into account(name,money) values(#{name},#{money})
    
最后注意:EL表达式输出null时,一般会解析成"“(判断变化的,即如果是null,那么就赋值”"空串),也就是空串 修改操作: 数据回显: 添加方法到AccountController :
    @RequestMapping("/findById")
    public String findById(Integer id,Model model){

        Account account =  accountService.findById(id);

        //存到model中
        model.addAttribute("account",account);

        //视图跳转
        return  "update";

    }
添加方法到AccountService接口和实现类 :
Account findById(Integer id);
 @Override
    public Account findById(Integer id) {
        return accountDao.findById(id);
    }
添加方法到AccountDao接口:
 Account findById(Integer id);
添加对应AccountDao.xml映射 :
 
    
     
                
                    
                    
                
                
                    
                    
                

                
                    
                    
              
                
            
账户更新: 添加方法到AccountController :
 
    @RequestMapping("/update")
    public String update(Account account){ 
        //注意:当对应值为""空值时,springmvc会在自动转换时,将null赋值给这个Integer(基本上只要是类就会)
        //而int不会(基本上基本类型不会),也就是说,将""空值赋值给int会报错
        accountService.update(account);
        return "redirect:/account/findAll";
    }
添加方法到AccountService接口和实现类 :
void update(Account account);
@Override
    public void update(Account account) {
        accountDao.update(account);
    }
添加方法到AccountDao接口:
void update(Account account);
添加对应AccountDao.xml映射 :
 
    
        update account set name = #{name},money = #{money} where id = #{id}
    
 
批量删除: 
部分list.jsp: 
  <%--实现全选全不选效果--%>
                      


添加方法到AccountController :
 
    @RequestMapping("/deleteBatch")
    public String deleteBatch(Integer[] ids){

        accountService.deleteBatch(ids);

        return "redirect:/account/findAll";

    }
添加方法到AccountService接口和实现类 :
void deleteBatch(Integer[] ids);
 @Override
    public void deleteBatch(Integer[] ids) {
        accountDao.deleteBatch(ids);
    }
添加方法到AccountDao接口:
void deleteBatch(Integer[] ids);
添加对应AccountDao.xml映射 :
 
    
        delete from account
        
            
                #{id}
                
            
        
    
最后注意:要给数据库表添加备注,可以使用在字段后面加上comment ‘主键’,后面的主键就是备注名 且虽然mysql的int不用设置长度(实际上是补位),如int(3),那么加上1时,隐藏的显示001 但一次性的长度是不能添加超过11的,否则报错 当你传入Date数据时,mysql会自动变成对应数(一般只有年月日) 且日期设置什么格式,对应的字符串基本就要什么格式,否则报错
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/844935.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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