AccountManage开发记录

整体概况

完成这个面试题前前后后用了10天,因为期间也在准备另外一个实习的面试。加上指定的技术栈我不是特别熟悉,所以花费了比较多的时间来学习,但是依然只完成了指定功能的80%左右。
第一天就遇到了很大的麻烦,由于spring-boot-starter-parent版本不是用的最新版,一直启动不了main。后来又遇到了json数据传输的问题,不知道spring-boot怎样处理json数据。
后来又遇到了包扫描的坑,之前没有在注入的bean之前加上@Component标签,造成bean没有注入,main无法启动等一系列问题。

关于maven生成的jar包的说明

在AccountManage-0.0.1-SNAPSHOT.jar所在的位置启动命令行,输入
java -jar AccountManage-0.0.1-SNAPSHOT.jar
可启动内置的tomcat服务器,在浏览器输入
http://localhost:8080/findAll
就可以出现以下界面,我使用的是本地mysql数据库,所以访问数据可能会有点问题。

核心代码

    @SpringBootApplication
    @Controller
    public class Application {

    @Autowired(required=true) 
    private AccountManageService accountManageService;

    // freemarker
    @RequestMapping("/hello")
    public String web(Map<String, Object> model) {
        model.put("time", new Date());
        return "hello";// 返回的内容就是templetes下面文件的名称
    }

    //
    @RequestMapping(value = "/update", method = RequestMethod.POST)
    @ResponseBody
    public void update(@RequestBody AccountManage account) {
        accountManageService.update(account);
    }

    @RequestMapping(value = "/add", method = RequestMethod.POST)
    @ResponseBody
    public void add(@RequestBody AccountManage account) {
        System.out.println(account);
        accountManageService.add(account);
    }

    @RequestMapping(value = "/delete", method = RequestMethod.POST)
    @ResponseBody
    public void delete(@RequestBody AccountManage account) {
        accountManageService.deletById(account.getId());
    }

    @RequestMapping("/findAll")
    public String findAll(@ModelAttribute("model") ModelMap model) {
        List<AccountManage> list = accountManageService.findAll();
        model.addAttribute("infos", list);
        model.addAttribute("time", new Date().toLocaleString());
        System.out.println(new Date().toLocaleString());
        return "hello";
    }

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}


Dao层

    @Component
    @Repository
    public class AccountManageDaoImpl implements AccountManageDao{
        @Autowired
        private JdbcTemplate jdbcTemplate;

        public List<AccountManage> findAll() {
            String sql = "select * from info";
            return (List<AccountManage>) jdbcTemplate.query(sql, new RowMapper<AccountManage>() {

                public AccountManage mapRow(ResultSet rs, int rowNum) throws SQLException {
                    AccountManage accountManage = new AccountManage();
                    accountManage.setCountType(rs.getString("count_type"));
                    accountManage.setCreateTime(rs.getString("create_time"));
                    accountManage.setId(rs.getString("id"));
                    accountManage.setLastTime(rs.getString("last_time"));
                    accountManage.setName(rs.getString("name"));
                    accountManage.setStatus(rs.getString("status"));
                    accountManage.setRemark(rs.getString("remark"));
                    System.out.println(accountManage.toString());
                    return accountManage;
                }
            });
        }

        public void add(AccountManage account) {
            jdbcTemplate.update(
                    "insert into info(id,name,create_time,status,count_type,last_time,remark ) values(?,?,?,?,?,?,?)",
                    account.getId(), account.getName(), account.getCreateTime(), account.getStatus(),
                    account.getCountType(), account.getLastTime(), account.getRemark());
        }

        public void deleteById(String id) {
            jdbcTemplate.update("delete from info where id = ?", id);
        }

        @Override
        public void update(AccountManage account) {
            jdbcTemplate.update(
                    "update  info(name,create_time,status,count_type,last_time,remark ) values(?,?,?,?,?,?) where id=?",
                     account.getName(), account.getCreateTime(), account.getStatus(),
                    account.getCountType(), account.getLastTime(), account.getRemark(),account.getId());
        }
    }