2020-08-09 SMBMS插入用户功能实现、项目架构思路、Mybatis配置问题

架构

总体架构都是一个思路:
一)当实现一个需求的时候,首先要去前端寻找相应的请求,不管是直接发出的请求还是通过Ajax发出的请求
二)在servlet中写出对应的方法,method对应好,构思方法体,参数列表,先做什么再做什么
三)去service业务层接受参数,应该实现什么功能,需要哪些参数并思考需不需要处理,需要提供给DAO层什么参数
四)在DAO层拿到service层提供的参数后,构建SQL,调用公共类方法执行,返回参数

今天实现功能:

一、Ajax异步实现加载下拉框(其实是功能复用,控制层多写一个方法)

	①  DAO层实现类中实现SQL查询:
	public List<Role> getRoleList(Connection connection) {
   
        List<Role> list = new ArrayList<Role>();
        PreparedStatement ps = null;
        ResultSet rs = null;
        if(connection!=null){
   
            String sql = "select * from smbms_role ";
            Object[] params = {
   };
            try {
   
                rs = BaseDao.excutequery(connection,sql,params,rs,ps);
                while (rs.next()){
   
                    Role role = new Role();
                    role.setId(rs.getInt("id"));
                    role.setRoleCode(rs.getString("roleCode"));
                    role.setRoleName(rs.getString("roleName"));
                    list.add(role);
                }
            } catch (SQLException e) {
   
                e.printStackTrace();
            }finally {
   
                BaseDao.close(connection,ps,rs);
            }
        }
        return list;
    }

② 业务层调用:

	        List<Role> list = new ArrayList<Role>();
        Connection cnn = null;
        cnn = BaseDao.getConnection();
        try {
   
            list = reoledao.getRoleList(cnn);
        } catch (SQLException e) {
   
            e.printStackTrace();
        }finally {
   
            BaseDao.close(cnn,null,null);
        }
        return list;

③ 控制层调用

    public void getrolelist(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
        //先创建一个RoleService业务层对象,用于调取获取角色列表方法
            RoleService roleService = new RoleServiceImlp();
            List<Role> list = null;
            list = roleService.getRoleList();

            resp.setContentType("Application/json");
            PrintWriter printWriter = resp.getWriter();
            printWriter.write(JSONArray.toJSONString(list));
            printWriter.flush();
            printWriter.close();
    }

二、实现插入用户功能

首先拿到需求思考,前台一堆数据,提交表单,应该是要在控制层就直接把全部参数获取到直接封装到User对象中,这样取用方便。思考一个点,前台取用的全部都是String类型,而数据库中存放的有的不是字符串类型,如时间,如userRole,这样就需要一定的转换。然后控制层调用了业务的方法,业务层应该返回的是一个boolean值,代表执行成功或者失败。而SQL执行的方法,返回的是一个Int值,代表执行成功了几条,因此需要在业务层中判断Int值的大小,如果大于0就返回给控制层一个true,反之则false。因此正确程序流程是,DAO层执行SQL,提交给业务层一个int,业务层执行方法提交给控制一个boolean。最后方法执行完毕。

一、DAO层

    public int add(Connection cnn,User user){
   
        PreparedStatement ps = null;
        ResultSet rs = null;
        String sql = "insert into smbms_user (userCode,userName,userPassword," +
                "userRole,gender,birthday,phone,address,creationDate,createdBy) " +
                "values(?,?,?,?,?,?,?,?,?,?)";
        int results = 0;

        Object[] params = {
   user.getUserCode(),user.getUserName(),user.getUserPassword(),user.getUserRole(),user.getGender(),user.getBirthday(),user.getPhone(),user.getAddress(),user.getCreationDate(),user.getCreatedBy()};

        try {
   
            results = BaseDao.excute(cnn,sql,params,ps);
        } catch (SQLException e) {
   
            e.printStackTrace();
        }finally {
   
            BaseDao.close(null,ps,null);
        }
        return results;
    }

二、业务层

    public boolean add(User user){
   
        Connection cnn = BaseDao.getConnection();
        int result = 0;
        boolean flag = false
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值