本文基于 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文件
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里面的方法一一对应;
还有说明一下
parameterType="User"
如果你没有在mybatis配置文件里面定义别名 这样写就会报错 你要把全类名写清楚
四、spring的配置文件 spring-context.xml
配置文件说明: 详情见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的整合。
利用上面的方法进行整合的时候,我们有一个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代码
这样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
用户ID:
用户名称:
用户密码:
user/index.jsp
ID
账号
密码
id
账号
密码
功能
${user.ID}
${user.NAME}
${user.PASSWORD}
修改 删除
user/edit.jsp
账号
密码
访问:http://localhost:8080/SpringMvcMybatisFreeMarker/index.jsp