在ssm中实现对数据的增删改查,我们继续使用昨天创建的项目。
1、在IUserInfoDao中创建相应的接口
public interface IUserInfoDao {
public List<UserInfo> findAll(); //查询数据
public void addUser(UserInfo userInfo); //增加用户
public void deleteUser(UserInfo userInfo); //删除用户
public void updateUser(UserInfo userInfo); //更新用户数据
}
2、在UserInfoMapper中实现Dao接口,也就是对数据库进行操作
<mapper namespace="com.zhongruan.dao.IUserInfoDao" >
<select id="findAll" resultType="com.zhongruan.bean.UserInfo">
select * from userinfo;
select>
<insert id="addUser" parameterType="com.zhongruan.bean.UserInfo">
insert into userinfo(id, username, password) value (#{id}, #{username}, #{password});
insert>
<delete id="deleteUser" parameterType="com.zhongruan.bean.UserInfo">
delete from userinfo where id = #{id};
delete>
<update id="updateUser" parameterType="com.zhongruan.bean.UserInfo">
update userinfo set username=#{username}, password=#{password} where id=#{id};
update>
mapper>
3、在IUserInfoService中声明服务的接口
public interface IUserInfoService {
public List<UserInfo> findAll();
public void add(UserInfo userInfo);
public void delete(UserInfo userInfo);
public void update(UserInfo userInfo);
}
4、在UserInfoServiceImpl中实现我们在上文中声明的接口
public class UserInfoServiceImpl implements IUserInfoService {
@Autowired //直接实现,不用声明
IUserInfoDao userInfoDao;
public List<UserInfo> findAll() { return userInfoDao.findAll(); }
public void add(UserInfo userInfo) { userInfoDao.addUser(userInfo); }
public void delete(UserInfo userInfo) { userInfoDao.deleteUser(userInfo); }
public void update(UserInfo userInfo) { userInfoDao.updateUser(userInfo); }
}
在UserInfoController中控制不同页面的跳转。
@Controller
@RequestMapping("user")
public class UserInfoController {
@Autowired
IUserInfoService userInfoService;
@RequestMapping("findAll.do")
public ModelAndView findAll(){
List<UserInfo> users = userInfoService.findAll();
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("users", users );
modelAndView.setViewName("allUser");
return modelAndView;
}
@RequestMapping("AddUser.do") //跳转到添加用户界面
public String AddUser(){
return "/addUser";
}
@RequestMapping("save.do") //重定向到主页
public String AddUser(UserInfo userInfo){
userInfoService.add(userInfo);
return "redirect:/user/findAll.do";
}
@RequestMapping("delete.do") //删除用户
public String DeleteUser(UserInfo userInfo){
userInfoService.delete(userInfo);
return "redirect:/user/findAll.do"; //删除后重定向
}
@RequestMapping("toUpdate.do") //跳转到更新用户数据界面
public String UpdateUser(UserInfo userInfo){
return "/updateUser";
}
@RequestMapping("update.do") //重定向到主页显示修改后数据
public String Update(UserInfo userInfo){
userInfoService.update(userInfo);
return "redirect:/user/findAll.do";
}
}
至此我们就实现了对于数据的增删改查。
实现用户的登录,我们在这里重新新建一个项目,新建的项目应该是与上文中的增添查改相同的项目结构,在创建好项目之后将老师给我们的页面中的所有文件全部都复制到webapp的目录下,项目结构应该如下所示:
图片中的target为建立Tomcat服务器之后并运行产生的。
1、dao文件代码
public interface IUserInfoDao {
public List<UserInfo> findAll();
public UserInfo findUser(@Param("username") String username, @Param("password") String password); //登录用户
}
2、在UserInfoMapper中实现Dao接口
<mapper namespace="com.zhongruan.dao.IUserInfoDao" >
<select id="finAll" resultType="com.zhongruan.bean.UserInfo">
select * from userinfo
select>
<select id="findUser" resultType="com.zhongruan.bean.UserInfo" parameterType="com.zhongruan.bean.UserInfo">
select * from userinfo where username = #{username} and password = #{password};
select>
mapper>
3、在service中定义检查登录的接口
public interface IUserInfoService {
public List<UserInfo> findAll();
public boolean checkLogin(String username, String password);
}
4、在serviceimpl中实现service中定义的接口
@Service("userInfoServiceImpl")
public class UserInfoServiceImpl implements IUserInfoService {
@Autowired
private IUserInfoDao iUserInfoDao;
@Override
public List<UserInfo> findAll(){
return iUserInfoDao.findAll();
}
@Override
public boolean checkLogin(String username, String password){
UserInfo user = iUserInfoDao.findUser(username, password);
boolean flag;
if (user != null){
flag = true;
}else {
flag = false;
}
return flag;
}
}
在controller中控制页面的跳转
@Controller
@RequestMapping("user")
public class UseInfoController {
@Autowired
private IUserInfoService iUserInfoService;
@RequestMapping("/findAll.do")
public ModelAndView findAll(){
ModelAndView modelAndView = new ModelAndView();
List<UserInfo> userInfos = iUserInfoService.findAll();
modelAndView.addObject("userInfos",userInfos);
modelAndView.setViewName("user-list");
return modelAndView;
}
@RequestMapping("login.do")
public ModelAndView checkLogin(UserInfo userInfo){
ModelAndView modelAndView = new ModelAndView();
boolean flag;
flag = iUserInfoService.checkLogin(userInfo.getUsername(), userInfo.getPassword()); //判断数据库中有无登录用户
if (flag == true){
modelAndView.addObject("userInfo", userInfo);
modelAndView.setViewName("main"); //跳转到主界面
return modelAndView;
}
modelAndView.setViewName("../failer"); //跳转到登录失败界面
return modelAndView;
}
}
以此我们就实现了登录的操作。
个人对ssm的总结:service包是用来定义一些接口,这些接口实现的主要作用就是对Dao包用sql获取到的数据进行判断;Dao包首先就是定义一个sql操作的接口,然后在resources下的mapper包中实现sql的具体操作;controller包是用来控制各个页面之间的跳转,通过Service中传递来的数据进行判断;bean包中定义了数据的属性以及get与set方法、构造函数、toString的方法。界面则位于webapp下的isp文件中。