ssm整合(springmvc、spring、mybatis)

一、项目目录结构

ssm整合(springmvc、spring、mybatis)_第1张图片

二、导包


  		UTF-8
  		4.12
  		1.7.25
  		1.4
    	2.6
  		2.3.1
		3.1.0
  		5.1.38
  		3.4.6
  		5.0.8.RELEASE
  		1.8.10
  		0.9.5.2
  		1.3.2
  		5.1.6.RELEASE
  
  
  
  
	    org.springframework
	    spring-webmvc
	    ${spring-webmvc.version}
	
  
		
		    org.mybatis
		    mybatis-spring
		    ${mybatis-spring.version}
		
  
		
			com.mchange
			c3p0
			${c3p0.version}
		
  
  
			org.aspectj
			aspectjweaver
			${aspect.version}
		
		
			org.aspectj
			aspectjrt
			${aspect.version}
		
  
  
  
			org.springframework
			spring-context
			${spring.version}
		

	
	    org.springframework
	    spring-jdbc
	    ${spring.version}
	
	
		
			org.springframework
			spring-test
			${spring.version}
			test
		
  
  
    org.mybatis
    mybatis
    ${mybatis.version}

    	
	
	    mysql
	    mysql-connector-java
	    ${mysql.version}
	
	
		
			javax.servlet.jsp
			javax.servlet.jsp-api
			${javax.servlet.jsp-api.version}
			provided
		
		
			javax.servlet
			javax.servlet-api
			${javax.servlet-api.version}
			provided
		
		
	
      commons-fileupload
      commons-fileupload
      ${commons-fileupload.version}
    
    
      commons-io
      commons-io
      ${commons-io.version}
    
		
	
	    org.slf4j
	    slf4j-log4j12
	    ${slf4j.version}
	    test
	
  
    
      junit
      junit
      ${junit.version}
      test
    
  

三、domian、service、controller

3.1.domain包

3.1.1.BaseBean
package com.blog.domain;

public class BaseBean {
	private Integer uid;
	private String uname;
	private Integer age;
	private String address;
	public Integer getUid() {
		return uid;
	}
	public void setUid(Integer uid) {
		this.uid = uid;
	}
	public String getUname() {
		return uname;
	}
	public void setUname(String uname) {
		this.uname = uname;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	@Override
	public String toString() {
		return "BaseBean [uid=" + uid + ", uname=" + uname + ", age=" + age + ", address=" + address + "]";
	}
	
}

3.1.2.Account
package com.blog.domain;

public class Account {
	private Integer id;
	private String name;
	private Double money;
	private Double transferMoney;
	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;
	}
	public Double getTransferMoney() {
		return transferMoney;
	}
	public void setTransferMoney(Double transferMoney) {
		this.transferMoney = transferMoney;
	}
	
}

3.2.service包

3.2.1.AccountService接口
package com.blog.service;

import com.blog.domain.Account;

public interface AccountService {
	//转账操作:账户a给账户b转账
	public void transfer(Account a,Account b);
}

3.2.2.AccountServiceImpl实现类

    package com.blog.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import com.blog.domain.Account;
import com.blog.mapper.AccountMapper;

@Service
@Transactional(isolation=Isolation.DEFAULT,propagation=Propagation.REQUIRED,readOnly=false)
public class AccountServiceImpl implements AccountService {
	@Autowired
	private AccountMapper accountMapper;
	
	@Override
	public void transfer(Account a, Account b) {
		//扣钱
		accountMapper.reduce(a);
		
		//异常
		//int x=1/0;
		
		//减钱
		accountMapper.increase(b);
	}

}


3.2.3.BaseSerive接口
package com.blog.service;

import com.blog.domain.BaseBean;

public interface BaseService {
	public BaseBean getOneById(Integer uid);
}

3.2.4.BaseServiceImpl实现类
package com.blog.service;


import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.blog.domain.BaseBean;
import com.blog.mapper.BaseMapper;

@Service
public class BaseServiceImpl implements BaseService {
	@Resource(name="baseMapper")
	private BaseMapper baseMapper;
	
	@Override
	public BaseBean getOneById(Integer uid) {
		return baseMapper.getOneById(uid);
	}

}

3.3.controlller包

3.3.1.BaseController
package com.blog.controller;

import javax.annotation.Resource;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.blog.domain.BaseBean;
import com.blog.service.BaseService;

@Controller
@RequestMapping(value="/base")
public class BaseController {
	@Resource(type=BaseService.class)
	private BaseService baseService;
	
	@GetMapping(value="/getOneById")
	public @ResponseBody String getOneById(@RequestParam Integer uid) {
		BaseBean bean = baseService.getOneById(uid);
		System.out.println(bean);
		return "成功访问";//给前端相应数据“成功访问”
	}
	@GetMapping(value="/")
	public String toNewJsp() {
		return "new";//会跳转到/webapp/views/new.jsp,前提是new.jsp存在
	}
}


三、mybatis相关配置

1.mybatis配置文件mybatisConfig.xml




	
	
		
		
	 	
	 	
	 
	 
  	
  		
  		
  	

2.mapper接口和mapper.xml映射文件

2.1.BaseMapper 接口
@Repository
public interface BaseMapper {
	public BaseBean getOneById(Integer uid);
}
2.2.BaseMapper .xml映射文件



	

2.3.AccountMapper接口
package com.blog.mapper;

import com.blog.domain.Account;

public interface AccountMapper {
	//账户加钱操作
	public void increase(Account a);
	//账户扣钱操作
	public void reduce(Account a);
}

2.4.AccountMapper.xml映射文件



	
		update t_account set money = money+#{transferMoney} where id=#{id}
	
	
		update t_account set money = money-#{transferMoney} where id=#{id}
	

四、spring相关配置applicationContext-core.xml



	
	
	
	
	
		
		
		
		
	
	
	
	
		
		
		
		
	
	
	
	
	
	
		
	
	
	
	
	
		
	
	
	

五、springmvc相关配置springmvc-servlet.xml













	
	



	
		
			
		
	




	

# 六、web.xml


  blog
  
  
    contextConfigLocation
    classpath:applicationContext*.xml
  
  
    org.springframework.web.context.ContextLoaderListener
  
  
  
    springmvc
    org.springframework.web.servlet.DispatcherServlet
    
    1
  
  
    springmvc
    /
  
  
  
    characterEncodingFilter
    org.springframework.web.filter.CharacterEncodingFilter
    
      encoding
      UTF-8
    
  
  
    characterEncodingFilter
    /*
  

七、db.properties(请根据自己的数据库进行修改)

dataSource.driverClass=com.mysql.jdbc.Driver
dataSource.jdbcUrl=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8
dataSource.user=blog
dataSource.password=blog

八、测试

1.测试BaseService

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext-core.xml")
public class TestBaseService {
	@Resource(type=BaseService.class)
	private BaseService baseService;
	
	@Test
	public void test1() {
		BaseBean bean = baseService.getOneById(15);
		System.out.println(bean);
	}
}

2.测试事务管理

package com.blog.test;

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;

import com.blog.domain.Account;
import com.blog.service.AccountService;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext-core.xml")
public class TestAccountService {
	@Autowired
	private AccountService accountService;
	
	@Test
	public void test1() {
		Double transferMoney = 1000d;
		Account a = new Account();
		Account b = new Account();
		a.setId(1);
		b.setId(2);
		a.setTransferMoney(transferMoney);
		b.setTransferMoney(transferMoney);
		accountService.transfer(a, b);
	}
}

3.postman测试springmvc

3.1.页面跳转()

ssm整合(springmvc、spring、mybatis)_第2张图片

3.2.响应前端数据

ssm整合(springmvc、spring、mybatis)_第3张图片

你可能感兴趣的:(ssm)