整体概况
完成这个面试题前前后后用了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());
}
}