利用springmvc和jdbcTemplate搭建一个对数据库操作的小例子

在接触到struts2+hibernate+spring三大框架搭建的项目时觉得对于比较简单的项目会显得很繁重,特别是struts现在使用的也不是很广泛,所以我通过网上的部分资料以及对spring的一些了解,在maven下搭建一个springmvc的小程序,仅仅是对数据库的增删改查的操作,需要其他功能也可以在这之上做一些添加,比如电话号码过滤器等功能

那么我们一步一步来,另外需要说的是对于springmvc我也是初学者,有错误的地方还请指正。

1、我们需要自己新建一个数据库,下面是我创建的数据库:


2、那么我们需要创建一个maven项目,这个网上有很多,这里也不赘述,下面是我的项目工程的结构:

利用springmvc和jdbcTemplate搭建一个对数据库操作的小例子_第1张图片

那么我们可以在pom.xml文件中写入相应的jar包就可以了,代码如下:


	org.springframework
	spring-webmvc
	3.2.5.RELEASE


	org.springframework
	spring-jdbc
	3.2.5.RELEASE


	mysql
	mysql-connector-java
	5.1.36


	jstl
	jstl
	1.2


	javax.servlet
	javax.servlet-api
	3.1.0

3、配置web.xml文件和spring配置文件applicationContext.xml

web.xml文件需要配置文字编码的过滤器和一个文件拦截器:

web.xml文件



	
		org.springframework.web.util.Log4jConfigListener
	
	
		CharacterEncodingFilter
		org.springframework.web.filter.CharacterEncodingFilter
		
			encoding
			UTF-8
		
		
			forceEncoding
			true
		
	
	
		CharacterEncodingFilter
		/*
	
	
		userServlet
		org.springframework.web.servlet.DispatcherServlet
		
			contextConfigLocation
			classpath:applicationContext*.xml
		
		1
	
	
		userServlet
		/
	

applicationContext.xml文件如下:

applicationContext.xml文件主要配置了数据源和jdbc事物,另外是userDao和userController


  
        
       
     
     
  
    
      
          
          
       
       
    
	
		
        
		
		
	
	
	
        
    
    
    
    
    
     
       	
    
4、从上面的配置文件可以看出,我们需要编写UserDAO类和UserController类,当然肯定不能少了User类,User类比较简单就不贴了,但要记住写上getter和setter方法

首先我们利用jdbc事物来编写UserDAO中的对数据库的操作,主要的代码如下:

public class UserDAO extends JdbcDaoSupport {
	//查询所有用户的列表
	public List getUserList(){
		List userlist=new ArrayList();
		String sql="select * from user";
		userlist=getJdbcTemplate().query(sql, new RowMapper(){
			public User mapRow(ResultSet rs, int index) throws SQLException {		
					 	User user=new User();
			            user.setId(rs.getInt("id"));
			            user.setName(rs.getString("name"));
			            user.setTel(rs.getString("tel"));
			            return user;
			}	
		});
		return userlist;
	}
	//通过用户名关键字获取用户列表
	public List getUserByName(String name){
		List userlist=new ArrayList();
		String sql="select * from user where name like ?";
		userlist=getJdbcTemplate().query(sql, new Object[]{"%"+name+"%"},new RowMapper(){

			public User mapRow(ResultSet rs, int index) throws SQLException {
				// TODO Auto-generated method stub
				User user=new User();
				user.setId(rs.getInt("id"));
				user.setName(rs.getString("name"));
	            user.setTel(rs.getString("tel"));
	            return user;
			}
			
		});
		return userlist;
	}
	//添加用户
	public void addUser(User user){
		String sql="insert into user(name,tel) values(?,?)";
		getJdbcTemplate().update(sql, new Object[]{user.getName(),user.getTel()});
		
	}
	//删除用户
	public void deleteUser(int id){
		String sql="delete from user where id=?";
		getJdbcTemplate().update(sql,id);
	}
	//更新用户
	public void updateUser(final User user,final int id){
		String sql="update user set name=?,tel=? where id=?";
		getJdbcTemplate().update(sql,new PreparedStatementSetter(){

			public void setValues(PreparedStatement ps) throws SQLException {
				// TODO Auto-generated method stub
				ps.setString(1, user.getName());
				ps.setString(2, user.getTel());
				ps.setInt(3, id);
			}}
);
	}
	//通过用户id获取用户列表,其实这里只有一条数据
	public List getUserById(int id){
		String sql="select * from user where id=?";
		return getJdbcTemplate().query(sql, new Object[]{id},new RowMapper(){

			public User mapRow(ResultSet rs, int index) throws SQLException {
				User user=new User();
				user.setId(rs.getInt("id"));
				user.setName(rs.getString("name"));
				user.setTel(rs.getString("tel"));
				return user;
			}

		});
	}
	
}
上面用到了jdbcTemplate事物,其实方法也不难,网上也讲的比较详细,这里也不赘述
然后编写UserController类:

@Controller  
@RequestMapping("/user") 
public class UserController {
	private UserDAO userDao;

	public UserDAO getUserDao() {
		return userDao;
	}

	public void setUserDao(UserDAO userDao) {
		this.userDao = userDao;
	}
	@RequestMapping("/getAll")
	public String getAll(HttpServletRequest request){
		List userlist=userDao.getUserList();
		request.setAttribute("userlist", userlist);
		/*
		 * 这里返回值主要看applicationContext.xml文件中的prefix和suffix
		 * 来决定跳转到/getAll.jsp页面的
		 */
		return "getAll";
	}
	
	@RequestMapping("/delete")
	public String delete(HttpServletRequest request,@RequestParam("id")int id){
		userDao.deleteUser(id);
		return getAll(request);
	}
	/*
	 * params="method=add"中主要是因为jsp页面中使用的是/user?method=add来做操作的
	 * 可以写出"/add",但是jsp页面要写出/user/add来做添加操作
	 * 可以去掉@RequestParam("name"),对结果没有影响
	 */
	@RequestMapping(params="method=add")
	public String addUser(@RequestParam("name")String name,@RequestParam("tel")String tel,HttpServletRequest request){
		User user=new User();
		user.setName(name);
		user.setTel(tel);
		userDao.addUser(user);
		return getAll(request);
	}
	@RequestMapping(params="method=findUser")
	public String findUser(String name,HttpServletRequest request){
		List userlist=userDao.getUserByName(name);
		request.setAttribute("userlist", userlist);
		return "getAll";
	}
	@RequestMapping("/edit")
	public String edit(@RequestParam("id") int id,HttpServletRequest request){
		List userlist=userDao.getUserById(id);
		request.setAttribute("userlist", userlist);
		return "edit";
	}
	
	@RequestMapping(params="method=update")
	public String update(String name,String tel,int id,HttpServletRequest request){
		User user=new User();
		user.setName(name);
		user.setTel(tel);
		userDao.updateUser(user,id);
		return getAll(request);
	}
}
5、编写前端页面,主要有getAll.jsp用来显示用户的列表信息,index.jsp主要完成的是添加用户的页面,edit.jsp主要是编辑用户信息的页面

这里我主要使用的是jstl来显示数据列表的,也可以使用freemarker来显示,主要修改部分代码和在pom里导入freemarker的jar包就可以了
这里只显示body部分的代码:

getAll.jsp:


	添加用户
	
		
姓名电话操作
">删除 ">编辑
index.jsp:


	
edit.jsp:


	你要更新的用户:
	
姓名电话
>
上面的jsp代码理解起来也不难,其中c:forEach主要是为了遍历userlist列表,c:out主要是输出对应得值

最后的效果页面,比较丑,无力吐槽:

利用springmvc和jdbcTemplate搭建一个对数据库操作的小例子_第2张图片
添加操作和修改,查询操作都是返回到getAll.jsp页面的,效果图也是这种效果,只不过是把数据库中的值显示出来而已

总结一下,感觉springmvc框架和s2sh框架还是有所区别的,而且相比较而言要轻便许多

你可能感兴趣的:(java)