程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> SpringMVC+Mybatis整合的增刪改查

SpringMVC+Mybatis整合的增刪改查

編輯:C++入門知識

SpringMVC+Mybatis整合的增刪改查



本文基於 SPRING注解。本文使用Oracle數據庫。

項目文件下載地址:http://download.csdn.net/detail/u010634066/8188965

項目總圖:

\ \


現在lib中導入所有所需jar包:這裡就不敘述了

一:在SRC下創建一個Bean包;在bean下面添加實體類,實體類對應於數據表,其屬性與數據表相同或多於數據表。

/**
 * 
 */
package com.szz.bean;

import com.szz.base.bean.BaseObject;


 
/**
 * @author Administrator
 *
 */
public class User extends BaseObject {
		
	private String ID;
	/**
	 * @return the iD
	 */
	public String getID() {
		return ID;
	}
	/**
	 * @param iD the iD to set
	 */
	public void setID(String iD) {
		ID = iD;
	}
	/**
	 * @return the nAME
	 */
	public String getNAME() {
		return NAME;
	}
	/**
	 * @param nAME the nAME to set
	 */
	public void setNAME(String nAME) {
		NAME = nAME;
	}
	/**
	 * @return the pASSWORD
	 */
	public String getPASSWORD() {
		return PASSWORD;
	}
	/**
	 * @param pASSWORD the pASSWORD to set
	 */
	public void setPASSWORD(String pASSWORD) {
		PASSWORD = pASSWORD;
	}
	private String NAME;
	private String PASSWORD;
	/* (non-Javadoc)
	 * @see com.szz.base.bean.BaseObject#toString()
	 */
	/* (non-Javadoc)
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		return "User [ID=" + ID + ", NAME=" + NAME + ", PASSWORD=" + PASSWORD
				+ "]";

 }
	
}

二、創建com.szz.dao包;裡面用來定義需要對數據進行操作的實體類型DAO接口


/**
 * 
 */
package com.szz.dao;

import java.util.List;

import com.szz.bean.User;

/**
 * @author Administrator
 *
 */
public interface UserDao {

	/*
	 * 查詢
	 */
	public List selectAll();

	public User findById(String id);
	
	public User findByUserName(String userName);
	
	public int countAll();
	
	/*
	 * 更新刪除插入
	 */
	public int insert(User user);
	
	public int update(User user);
	
	public int delete(String userName);
	
/*	//返回插入數據的ID
	public int findInsertUserID(User user);*/
	
	/*//批處理   插入多條數據
	public void insertUsers(List users);*/
	
}

三、創建包com.szz.tables.xml(這樣命名好像不好 定義com.szz.Mappers比較直觀一點) 這個是用來寫sql語句的xml文件

  
 
 
 
 
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 		insert into SM_USER(ID,NAME,PASSWORD) VALUES(#{ID},#{NAME},#{PASSWORD})
 	
 	
 	
 	
		update SM_USER 
		
		
			NAME=#{NAME},
			PASSWORD=#{PASSWORD}
		
			where ID=#{ID}
 	
 	
 	
 		delete FROM SM_USER WHERE ID=#{ID}
 	
 

命名空間定義為我們需要對應的DAO接口;這裡每個方法的ID都跟DAO裡面的方法一一對應;

還有說明一下

parameterType="User"
如果你沒有在mybatis配置文件裡面定義別名 這樣寫就會報錯 你要把全類名寫清楚

 
    	
     



四、spring的配置文件 spring-context.xml





    
    
       
	
	
	 

	
      
    
    
	
       

    
 
    
    
        
        		 
                
                
                
                
                

     
    
    
    
    
      
    
     

    
        
        
         
             
           
     
    
    
    
    
     
	
		
		
	
	
	
	
    
 
    
    
    
   
	  
    	  
    	  
	
    
    
    

    

配置文件說明: 詳情見http://www.blogjava.net/ldwblog/archive/2013/07/10/401418.html


在定義SqlSessionFactoryBean的時候,dataSource屬性是必須指定的,它表示用於連接數據庫的數據源。當然,我們也可以指定一些其他的屬性,下面簡單列舉幾個:

  • mapperLocations:它表示我們的Mapper文件存放的位置,當我們的Mapper文件跟對應的Mapper接口處於同一位置的時候可以不用指定該屬性的值。

  • configLocation:用於指定Mybatis的配置文件位置。如果指定了該屬性,那麼會以該配置文件的內容作為配置信息構建對應的SqlSessionFactoryBuilder,但是後續屬性指定的內容會覆蓋該配置文件裡面指定的對應內容。

  • typeAliasesPackage:它一般對應我們的實體類所在的包,這個時候會自動取對應包中不包括包名的簡單類名作為包括包名的別名。多個package之間可以用逗號或者分號等來進行分隔。

  • typeAliases:數組類型,用來指定別名的。指定了這個屬性後,Mybatis會把這個類型的短名稱作為這個類型的別名,前提是該類上沒有標注@Alias注解,否則將使用該注解對應的值作為此種類型的別名。

    • plugins:數組類型,用來指定Mybatis的Interceptor。

    • typeHandlersPackage:用來指定TypeHandler所在的包,如果指定了該屬性,SqlSessionFactoryBean會自動把該包下面的類注冊為對應的TypeHandler。多個package之間可以用逗號或者分號等來進行分隔。

    • typeHandlers:數組類型,表示TypeHandler


    • 接下來就是在Spring的applicationContext文件中定義我們想要的Mapper對象對應的MapperFactoryBean了。通過MapperFactoryBean可以獲取到我們想要的Mapper對象。MapperFactoryBean實現了Spring的FactoryBean接口,所以MapperFactoryBean是通過FactoryBean接口中定義的getObject方法來獲取對應的Mapper對象的。在定義一個MapperFactoryBean的時候有兩個屬性需要我們注入,一個是Mybatis-Spring用來生成實現了SqlSession接口的SqlSessionTemplate對象的sqlSessionFactory;另一個就是我們所要返回的對應的Mapper接口了。

      定義好相應Mapper接口對應的MapperFactoryBean之後,我們就可以把我們對應的Mapper接口注入到由Spring管理的bean對象中了,比如Service bean對象。這樣當我們需要使用到相應的Mapper接口時,MapperFactoryBean會從它的getObject方法中獲取對應的Mapper接口,而getObject內部還是通過我們注入的屬性調用SqlSession接口的getMapper(Mapper接口)方法來返回對應的Mapper接口的。這樣就通過把SqlSessionFactory和相應的Mapper接口交給Spring管理實現了Mybatis跟Spring的整合。

      對應xml
    •  
      	  
          	  
          	  
      	



      MapperScannerConfigurer

      利用上面的方法進行整合的時候,我們有一個Mapper就需要定義一個對應的MapperFactoryBean,當我們的Mapper比較少的時候,這樣做也還可以,但是當我們的Mapper相當多時我們再這樣定義一個個Mapper對應的MapperFactoryBean就顯得速度比較慢了。為此Mybatis-Spring為我們提供了一個叫做MapperScannerConfigurer的類,通過這個類Mybatis-Spring會自動為我們注冊Mapper對應的MapperFactoryBean對象。

      如果我們需要使用MapperScannerConfigurer來幫我們自動掃描和注冊Mapper接口的話我們需要在Spring的applicationContext配置文件中定義一個MapperScannerConfigurer對應的bean。對於MapperScannerConfigurer而言有一個屬性是我們必須指定的,那就是basePackage。basePackage是用來指定Mapper接口文件所在的基包的,在這個基包或其所有子包下面的Mapper接口都將被搜索到。多個基包之間可以使用逗號或者分號進行分隔。最簡單的MapperScannerConfigurer定義就是只指定一個basePackage屬性,如:

      Xml代碼
      1. bean>


        這樣MapperScannerConfigurer就會掃描指定基包下面的所有接口,並把它們注冊為一個個MapperFactoryBean對象。



        五、創建mybatis-config.xml


        
          
        
        	
        
        
        
        
         
            	
             
        
         
         
        
        	
        	
        

        六、創建services接口

        package com.szz.service;
        
        import java.util.List;
        
        import com.szz.bean.User;
        
        public interface UserService {
        
        	public List getUsers();
        	
        	/*
        	 * 濡傛灉ID涓虹┖灏辨壘username    濡傛灉username涓虹┖灏辨壘ID锛?閮藉~鎸夌収ID
        	 */
        	public User getUserInfo(String ID,String userName);
        	
        	public int getCount();
        	
        	
        //	public int saveUser(User user);
        	
        	public int insertUser(User user);
        	public int updateUser(User user);
        	
        	public int deleteUser(String ID);
        }
        

        七‘services接口的實現類 serviceImpl


        /**
         * 
         */
        package com.szz.service.impl;
        
        import java.util.List;
        
        import org.mybatis.spring.SqlSessionTemplate;
        import org.springframework.beans.factory.annotation.Autowired;
        import org.springframework.stereotype.Service;
        
        import com.szz.bean.User;
        import com.szz.dao.UserDao;
        import com.szz.service.UserService;
        
        /**
         * @author Administrator
         *
         */
        @Service("userService")
        public class UserServiceImpl implements UserService {
        
        	@Autowired
        	private UserDao userDao;
        	/*
        	@Autowired
        	private SqlSessionTemplate sessionTemplate;*/
        	
        
        	public UserDao getUserDao() {
        		return userDao;
        	}
        
        	/**
        	 * @param userDao the userDao to set
        	 */
        	public void setUserDao(UserDao userDao) {
        		this.userDao = userDao;
        	}
        
        	@Override
        	public List getUsers() {
        		// TODO Auto-generated method stub
        		return userDao.selectAll();
        		//return sessionTemplate.getMapper(UserDao.class).selectAll();
        	}
        
        	@Override
        	public User getUserInfo(String ID, String userName) {
        		// TODO Auto-generated method stub
        		if(ID!=null){
        			return userDao.findById(ID);
        		}
        		else
        			return userDao.findByUserName(userName);
        	}
        
        	@Override
        	public int getCount() {
        		// TODO Auto-generated method stub
        		return userDao.countAll();
        	}
        
        	@Override
        	public int insertUser(User user) {
        		// TODO Auto-generated method stub
        			return userDao.insert(user);
        	}
        	
        	@Override
        	public int updateUser(User user) {
        		// TODO Auto-generated method stub
        			return userDao.update(user);
        	}
        
        	@Override
        	public int deleteUser(String ID) {
        		// TODO Auto-generated method stub
        		return userDao.delete(ID);
        	}
        	
        	
        }
        

        八、創建控制類controller包/**
        /**
         * 
         */
        package com.szz.action;
        
        import java.util.ArrayList;
        import java.util.List;
        
        import javax.servlet.http.HttpServletRequest;
        
        import org.springframework.beans.factory.annotation.Autowired;
        import org.springframework.stereotype.Controller;
        import org.springframework.web.bind.annotation.ModelAttribute;
        import org.springframework.web.bind.annotation.PathVariable;
        import org.springframework.web.bind.annotation.RequestMapping;
        import org.springframework.web.bind.annotation.RequestMethod;
        import org.springframework.web.bind.annotation.RequestParam;
        import org.springframework.web.servlet.ModelAndView;
        
        
        import com.szz.base.acion.BaseAction;
        import com.szz.bean.User;
        import com.szz.service.UserService;
        
        /**
         * @author Administrator
         *
         */
        @Controller
        @RequestMapping(value="/user")
        public class UserAction extends BaseAction {
        	@Autowired
        	private UserService userService;
        	
        	
        	
            @RequestMapping(value="/login",method=RequestMethod.POST)
        		public String login(){ 
            	
        			return "redirect:/user/userList";
        		}
        	 
            @RequestMapping(value="userList")
            public ModelAndView showAll(){
            	System.out.println("index......");
            	ModelAndView MV = new ModelAndView("user/index");
            	List userList = new ArrayList();
            	userList = userService.getUsers();
            	MV.addObject("userList",userList);
            	return MV;
            }
        	@RequestMapping(value="/add")
        	public ModelAndView login(HttpServletRequest request,@RequestParam(value="username", required=true, defaultValue="szz") String name){ 
        		System.out.println("/user/login....");
        		ModelAndView mv = new ModelAndView("user/success");  
        	    mv.addObject("add", "娣誨姞"); 
        	    return mv;  
        	}
        	@RequestMapping(value="/edituser")
        	public ModelAndView edit(@RequestParam(value="ID") String ID){
        		ModelAndView mv = new ModelAndView("user/edit");
        		User user = userService.getUserInfo(ID, null);
        		mv.addObject("user",user);
        		return mv;
        	}
        	
        	@RequestMapping(value="/deleteuser")
        	public String deleteuser(@RequestParam(value="ID") String ID){
        		userService.deleteUser(ID);
        		return "redirect:/user/userList";
        	}
        	@RequestMapping(value="/userset",method=RequestMethod.POST)  
        	public String user(@ModelAttribute("user")User user ) {
        		 System.out.println(user.getNAME());
        		 return "user/success";   
        	}
        	
        	@RequestMapping(value="/insertuser",method=RequestMethod.POST)  
        	public String insertUser( User userInfo ) throws Exception {  
        		userService.insertUser(userInfo);
        		return "redirect:/user/userList";
        	}
        	
        	@RequestMapping(value="/updateuser",method=RequestMethod.POST)  
        	public String updateUser( User userInfo ) throws Exception {  
        		userService.updateUser(userInfo);
        		return "redirect:/user/userList";
        	}
        	
        }
        


        九、web.xml

        
        
        	
        	
        	 
            	Dispatcher
            	org.springframework.web.servlet.DispatcherServlet
            	
            		contextConfigLocation
            		
            			classpath*:spring-context.xml
            		
            	
            	1
            
            
                Dispatcher
                /
            
        	
        	
        		index.jsp
        	
        


        十、一些頁面之類的;

        index.jsp

         
          
           
           
          

        user/index.jsp

        
        
          
          	
          	
          	
          		
          			id
          			賬號
          			密碼
          			功能
          		
          		 
          		
             	
          			${user.ID}
          			${user.NAME}
          			${user.PASSWORD}
          			修改   刪除 
          		
             
          	
            
          
        

        user/edit.jsp

        
          	 
            
          


        訪問:http://localhost:8080/SpringMvcMybatisFreeMarker/index.jsp

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved