博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SSM练习--CURD之后端代码
阅读量:6809 次
发布时间:2019-06-26

本文共 6595 字,大约阅读时间需要 21 分钟。

通过Mybatis的逆向工程生成com.ssm.bean,com.ssm.dao,mapper下的文件

 

 

 1.   逆向工程生成的数据库操作为单表操作,若要多表操作需要在xml文件下添加相关 的代码如下添加查询员工信息时可以查询部门信息

e.emp_id, e.emp_name, e.gender, e.email, e.d_id,d.dept_id,d.dept_name

2.在Employee.java中添加部门字段

  

//查询员工的同时部门信息也查询出来    private Department department;

以及getter和setter 方法

public Department getDepartment() {        return department;    }    public void setDepartment(Department department) {        this.department = department;    }

3.EmployeeMapper添加新定义的两个多表联查方法

List
selectByExampleWithDept(EmployeeExample example); Employee selectByPrimaryKeyWithDept(Integer empId);

4.业务模块的逻辑应用设计EmployeeService.java,用@Service标注

  4.1查询所有员工信息

 

@Servicepublic class EmployeeService {        @Autowired//自动注入    EmployeeMapper employeeMapper;    //查询所有员工信息    public List
getAll(){ return employeeMapper.selectByExampleWithDept(null); }

  4.2 保存员工信息

public void saveEmp(Employee employee) {        employeeMapper.insertSelective(employee);            }

  4.3 检查用户名是否可用

public boolean checkUser(String empName) {        EmployeeExample example = new EmployeeExample();        Criteria criteria = example.createCriteria();        criteria.andEmpNameEqualTo(empName);        long count = employeeMapper.countByExample(example);        return count == 0;            }

  4.4 按照员工id查询员工

public Employee getEmp(Integer id) {        Employee employee = employeeMapper.selectByPrimaryKey(id);        return employee;    }

  4.5 更新员工数据

public void updateEmp(Employee employee) {        //按照主键有选择更新,因为设定名字是不能更改的        employeeMapper.updateByPrimaryKeySelective(employee);            }

  4.6 单个删除与批量删除

  

public void deleteEmp(Integer id) {        employeeMapper.deleteByPrimaryKey(id);            }    //批量删除    public void deleteBatch(List
ids) { EmployeeExample example = new EmployeeExample(); Criteria criteria = example.createCriteria(); //delete from xxx where emp_id in(1,2,3) criteria.andEmpIdIn(ids); employeeMapper.deleteByExample(example); }}

5.业务模块流程的控制EmployeeController.java 用@Controller标注

   5.1信息查询及分页信息

  

@Controllerpublic class EmployeeController {    @Autowired    EmployeeService employeeService;            //@ResponseBody使用,需要导入jackson包,返回json格式        @RequestMapping("/emps")    @ResponseBody    //返回Msg数据    public Msg getEmpsWithJson(@RequestParam(value = "pn", defaultValue = "1") Integer pn){        // 引入PageHelper分页插件                // 在查询之前只需要调用 pn=第几页,5=每页多少条                PageMethod.startPage(pn, 3);                // startPage后紧跟的查询就是一个分页查询                List
emps = employeeService.getAll(); // pageinfo包装查询后的结果,只需要pageinfo交给页面,封装了详细的信息 // 5=传入分页连续显示的页数 PageInfo page = new PageInfo(emps, 5); return Msg.success().add("pageInfo",page); }

  5.2 员工保存

//员工保存    @RequestMapping(value="/emp",method=RequestMethod.POST)    @ResponseBody    public Msg saveEmp(@Valid Employee employee,BindingResult result){            if(result.hasErrors()){                //将错误信息封装到map中                Map
map = new HashMap(); //从result中提取所有字段的校验信息 List
errors=result.getFieldErrors(); //遍历错误信息 for(FieldError fieldError : errors){ System.out.println("错误的字段名:"+fieldError.getField()); System.out.println("错误信息:"+fieldError.getDefaultMessage()); map.put(fieldError.getField(),fieldError.getDefaultMessage()); } return Msg.fail().add("errorFields", map); }else{ employeeService.saveEmp(employee); return Msg.success(); } }

  5.3 检查数据是否重复

  

//检查数据信息重复    @RequestMapping("/checkuser")    @ResponseBody    public Msg checkuser(@RequestParam("empName")String empName){        //先判断用户名是否是合法的表达式        String regx = "(^[a-zA-Z0-9_-]{6,16}$)|(^[\u2E80-\u9FFF]{2,5}$)";        if(!empName.matches(regx)){            return Msg.fail().add("va_msg", "用户名不合法");        }        //数据库用户名重复校验        boolean b = employeeService.checkUser(empName);        if(b){            return Msg.success();        }else{            return Msg.fail().add("va_msg", "用户名不可用");        }            }

  5.4 根据id查询员工

  

//根据id查询员工         把查询到的数据放到Msg对象中        @RequestMapping(value="/emp/{id}",method=RequestMethod.GET)        @ResponseBody        //@PathVariable指定id是从路径中/emp/{id}拿到的        public Msg getEmp(@PathVariable("id") Integer id){            Employee employee = employeeService.getEmp(id);            return Msg.success().add("emp", employee);                    }

  5.5 保存修改的员工信息

//保存修改的员工信息        @RequestMapping(value="/emp/{empId}",method=RequestMethod.PUT)        @ResponseBody        public Msg savaEmp(Employee employee,HttpServletRequest request){            System.out.println("请求体中的值:"+request.getParameter("gender"));            System.out.println("将要更新的数据:"+employee);             employeeService.updateEmp(employee);            return Msg.success();        }

  5.6 员工单个和批量删除

//员工单个和批量删除        @RequestMapping(value="/emp/ids}",method=RequestMethod.DELETE)        @ResponseBody        public Msg deleteEmpById(@PathVariable("ids") String ids){                        if(ids.contains("-")){                List
del_ids = new ArrayList(); String[] str_ids = ids.split("-"); for(String string : str_ids){ del_ids.add(Integer.parseInt(string)); } employeeService.deleteBatch(del_ids); }else{ Integer id = Integer.parseInt(ids); employeeService.deleteEmp(id); } return Msg.success(); }}

 

转载于:https://www.cnblogs.com/liurg/p/8335571.html

你可能感兴趣的文章
MySQL数据管理1
查看>>
kernel对于SO_REUSEADDR的处理——避免滥用引发Bug
查看>>
Saltstack SLS文件解读
查看>>
LiveUSB像光驱LiveCD一样启动
查看>>
Linux利用sendmail和fetion发送报警通知
查看>>
C/C++中一次性执行多个DOS命令
查看>>
(转载)经典SQL语句大全3-技巧篇
查看>>
在SSIS包中使用 Checkpoint从失败处重新启动包
查看>>
关于项目自动化测试架构的改良计划 - 解析XInclude标记
查看>>
Powershell DSC 5.0 - Push 模式
查看>>
Provisioning Services 7.8 入门系列教程之一 部署学习环境介绍
查看>>
xen虚拟化实战系列(十一)之xen虚拟机磁盘文件挂载
查看>>
技术分享连载(四十五)
查看>>
hive lock监控
查看>>
NICs bonding in openfiler 2.3
查看>>
bash shell退格键乱码
查看>>
分治法实现大数相乘 C#实现
查看>>
Msg 9002 The transaction log for database '' is full
查看>>
高斯求和1+2+3+······+n-1+n=?
查看>>
Android学习启动篇
查看>>