前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringMVC+Mybatis整合的增删改查

SpringMVC+Mybatis整合的增删改查

作者头像
石臻臻的杂货铺[同名公众号]
发布2021-07-14 09:53:40
3220
发布2021-07-14 09:53:40
举报
文章被收录于专栏:kafka专栏

本文基于 SPRING注解。本文使用Oracle数据库。

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

项目总图:

现在lib中导入所有所需jar包:这里就不叙述了

一:在SRC下创建一个Bean包;在bean下面添加实体类,实体类对应于数据表,其属性与数据表相同或多于数据表。

代码语言:javascript
复制
/**
 * 
 */
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接口

代码语言:javascript
复制
/**
 * 
 */
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文件

代码语言:javascript
复制
 		select * from SM_USER 
 	
 	
 	
 		select count(*) c from SM_USER 
 	
 	
 	
 		select * from SM_USER where ID=#{ID}
 	
 	
 	
 		select * from SM_USER where NAME=#{NAME}
 	
 	
 	
 	
 	
 		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里面的方法一一对应;

还有说明一下

代码语言:javascript
复制
parameterType="User"

如果你没有在mybatis配置文件里面定义别名  这样写就会报错   你要把全类名写清楚

代码语言:javascript
复制

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

代码语言:javascript
复制

配置文件说明:  详情见http://www.blogjava.net/ldwblog/archive/2013/07/10/401418.html

在定义SqlSessionFactoryBean的时候,dataSource属性是必须指定的,它表示用于连接数据库的数据源。当然,我们也可以指定一些其他的属性,下面简单列举几个:

      定义好相应Mapper接口对应的MapperFactoryBean之后,我们就可以把我们对应的Mapper接口注入到由Spring管理的bean对象中了,比如Service bean对象。这样当我们需要使用到相应的Mapper接口时,MapperFactoryBean会从它的getObject方法中获取对应的Mapper接口,而getObject内部还是通过我们注入的属性调用SqlSession接口的getMapper(Mapper接口)方法来返回对应的Mapper接口的。这样就通过把SqlSessionFactory和相应的Mapper接口交给Spring管理实现了Mybatis跟Spring的整合。

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 class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  2. <property name="basePackage" value="com.tiantian.mybatis.mapper" />
  3. bean>  

      这样MapperScannerConfigurer就会扫描指定基包下面的所有接口,并把它们注册为一个个MapperFactoryBean对象。

五、创建mybatis-config.xml

代码语言:javascript
复制

六、创建services接口

代码语言:javascript
复制
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

代码语言:javascript
复制
/**
 * 
 */
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包/**

代码语言:javascript
复制
/**
 * 
 */
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

代码语言:javascript
复制
    	Dispatcher
    	org.springframework.web.servlet.DispatcherServlet
    	
    		contextConfigLocation
    		
    			classpath*:spring-context.xml
    		
    	
    	1
    
    
        Dispatcher
        /
    
	
	
		index.jsp

十、一些页面之类的;

index.jsp

代码语言:javascript
复制
   		用户ID:
   		
用户名称:
   		
用户密码:

user/index.jsp

代码语言:javascript
复制
  			ID
  			 
  		
  		
  		
  			 
  			账号
  			 
  		
  		
  			 
  			密码
  			
  		
  		
  			 
  		
  	
  	
  	
  	
     	
  		
  			id
  			账号
  			密码
  			功能
  		
  		 
  		
  			${user.ID}
  			${user.NAME}
  			${user.PASSWORD}
  			修改   删除 

user/edit.jsp

代码语言:javascript
复制
  			账号
  			
  		
  		
  			 
  			密码

访问:http://localhost:8080/SpringMvcMybatisFreeMarker/index.jsp

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2014/11/23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MapperScannerConfigurer
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档