Java开发环境之Spring+SpringMVC+Mybatis整合demo


开始学习java开源框架,今天带来的是Spring+SpringMVC+Mybatis框架的整合,并附带一个简单的用户增删该查demo,如有不严谨的地方,恳请各位大神指正,谢谢!


我所用到的框架版本是Spring3.2.13,Mybatis3.2.8,数据库用的是MySQL所用的开发IDE是Eclipse(Myeclipse和eclipse一样就不重复演示了)好了不说废话了,进入正题!!!


1,在eclipse中创建动态web项目spring_mvc_mybatis

2,导入jar包

2.1导入spring包,所有19个

Java开发环境之Spring+SpringMVC+Mybatis整合demo_第1张图片


2.2,导入mybatis包和整合包2个

Java开发环境之Spring+SpringMVC+Mybatis整合demo_第2张图片


2.3,导入数据库驱动


2.4,导入数据源和连接池(dbcp或者c3p0),我这里用的是dbcp2个


2.5,AOP依赖包3个,aop代理1个

Java开发环境之Spring+SpringMVC+Mybatis整合demo_第3张图片


2.6,日志包commons-logging.jar   log4j.jar两个


2.7,标签库jstl.jar   standard.jar两个


2.8,文件上传commons-io commons-fileupload commons-lang三个


2.9,json支持jackson包

2.10,导入Junit单元测试包


3,在web.xml中创建spring Servlet容器,和中文编码过滤器

 
  
  	may26test
  	org.springframework.web.servlet.DispatcherServlet
  	
  		contextConfigLocation
  		classpath:beans.xml
  	
  
  
  	may26test
  	*.do
  
  
  
  
  	characterEncoding
  	org.springframework.web.filter.CharacterEncodingFilter
  	
  		encoding
  		utf-8
  	
  
  
  	characterEncoding
  	*.do
  

4,创建beans.xml(applicationContext.xml)





 	
 	

 	
 	

 	
		
		
	
	

	
		
		
		
		
	
	
	
	

	
		
		
	
	
		
		
		
	


	
	
    	
  	
	
	




5,引入jdbc.properties 和log4j.properties配置文件,至此,准备工作就做完了,接下来了做一个简单的用户增删该查,测试一下我们的环境是否正确


6,创建Mybatis的Annotation--->MybatisRepository spring容器在扫描的时候只扫描带有该注解的mapper

package com.may26.testuser.base;

import org.springframework.stereotype.Component;

@Component
public @interface MybatisRepository {

}


7,创建实体类User

package com.may26.testuser.entity;

public class User {
	private Integer id;
	private String name;
	private String loginName;
	private String password;
	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 String getLoginName() {
		return loginName;
	}
	public void setLoginName(String loginName) {
		this.loginName = loginName;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
}

8,创建dao(mapper)接口,实现实体的CRUD

8.1BaseDao

package com.may26.testuser.base;

import java.util.List;

public interface BaseDao {
	/**查询所有*/
	List listAll();
	/**根据id查询实体*/
	T findById(Integer id);
	/**根据名称查找实体*/
	T findByName(String name);
	/**增加实体*/
	void save(T emtity);
	/**删除实体*/
	void delete(Integer id);
	/**更新实体*/
	void update(T entity);
}

8.2,UserMapper

package com.may26.testuser.dao;

import com.may26.testuser.base.BaseDao;
import com.may26.testuser.base.MybatisRepository;
import com.may26.testuser.entity.User;

@MybatisRepository
public interface UserMapper extends BaseDao {
	/**根据登陆名查找用户*/
	User findByLoginName(String longinName);

}

9,创建UserMapper.xml文件

  





	insert into user (id,name,loginName,password) values (
		#{id},
		#{name},
		#{loginName},
		#{password}
	)



	delete from user where id = #{id}



	update user set
		name=#{name},
		loginName=#{loginName},
		password=#{password}
	where id=#{id}	











10,测试Mapper

package com.may26.testuser.test;

import java.util.List;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.may26.testuser.dao.UserMapper;
import com.may26.testuser.entity.User;

public class TestUserMapper {
	private ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
	private UserMapper userMapper = ctx.getBean(UserMapper.class);
	
	@Test
	public void testSave(){
		for(int i = 0;i<=10;i++){
			User u = new User();
			u.setName("李四"+i);
			u.setLoginName("ls"+i);
			u.setPassword("123");
			userMapper.save(u);
		}
	}
	
	@Test
	public void testDelete(){
		userMapper.delete(1);
	}
	
	@Test
	public void testFindById(){
		User u = userMapper.findById(2);
		System.out.println(u.getName()+"---"+u.getLoginName()+"---"+u.getPassword());
		
	}
	
	@Test
	public void testFindByName(){
		User u = userMapper.findByName("张三");
		System.out.println(u.getName()+"---"+u.getLoginName()+"---"+u.getPassword());
		
	}
	
	@Test
	public void testFindByLoginName(){
		User u = userMapper.findByLoginName("zs");
		System.out.println(u.getName()+"---"+u.getLoginName()+"---"+u.getPassword());
		
	}
	
	@Test
	public void testListAll(){
		List list = userMapper.listAll();
		for(User u : list){
			System.out.println(u.getName());
		}
	}
}

11,service层

package com.may26.testuser.service;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.may26.testuser.dao.UserMapper;
import com.may26.testuser.entity.User;

@Service
@Transactional
public class UserService {
	
	@Resource
	private UserMapper userMapper;

	public List listAll() {
		List list = userMapper.listAll();
		return list;
	}

	public User findById(int id) {
		User u = userMapper.findById(id);
		return u;
	}

	public void saveUser(String name, String loginName, String password) {
		User u = new User();
		u.setLoginName(loginName);
		u.setName(name);
		u.setPassword(password);
		userMapper.save(u);
	}

	public void deleteUser(int id) {
		userMapper.delete(id);
	}

	public void updateUser(int id, String name, String loginName,
			String password) {
		//需要判断参数是否为空
		User u = userMapper.findById(id);
		u.setLoginName(loginName);
		u.setName(name);
		u.setPassword(password);
		userMapper.update(u);
	}

}

12,controller层

package com.may26.testuser.web;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import com.may26.testuser.entity.User;
import com.may26.testuser.service.UserService;

@Controller
@RequestMapping("user")
public class UserController{
	@Resource
	private UserService userService;
	
	@RequestMapping(value="list.do")
	//@ResponseBody
	public String listAll(Model model){
		List userList = userService.listAll();
		model.addAttribute("userList", userList);
		//return userList;
		return "/user/list";
	}
	
	/**用户详细信息*/
	@RequestMapping("userInfo.do")
	public String findById(int id,Model model){
		User user = userService.findById(id);
		model.addAttribute("user", user);
		return "/user/userInfo";
	}
	
	/**增加用户*/
	@RequestMapping("add.do")
	public String saveUser(String name,String loginName,String password,Model model){
		userService.saveUser(name,loginName,password);
		List userList = userService.listAll();
		model.addAttribute("userList", userList);
		return "/user/list";
	}
	@RequestMapping("addUI.do")
	public String saveUserUI(){
		return "/user/add";
	}
	
	/**删除用户*/
	@RequestMapping("delete.do")
	public String deleteUser(int id,Model model){
		userService.deleteUser(id);
		List userList = userService.listAll();
		model.addAttribute("userList", userList);
		return "user/list";
	}
	
	/**修改用户*/
	@RequestMapping("update.do")
	public String updateUser(int id,String name,String loginName,String password ,Model model){
		userService.updateUser(id,name,loginName,password);
		List userList = userService.listAll();
		model.addAttribute("userList", userList);
		return "user/list";
	}
	@RequestMapping("updateUI.do")
	public String updateUserUI(int id,Model model){
		User user = userService.findById(id);
		model.addAttribute("user", user);
		return "user/update";
	}
	
}

13,JSP页面

Java开发环境之Spring+SpringMVC+Mybatis整合demo_第4张图片


Java开发环境之Spring+SpringMVC+Mybatis整合demo_第5张图片


好了,完整的Spring+SpringMVC+Mybatis整合到此结束了,欢迎观看

你可能感兴趣的:(JAVA框架搭建)