SpringBoot非官方教程原文地址:https://blog.csdn.net/forezp/article/details/70341818
快速搭建springboot-crud项目 使用JdbcTemplates访问Mysql
- 开发环境
- jdk 1.8
- maven 3.0
- idea
- mysql
初始化数据库
CREATE TABLE `account` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `money` double DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8; INSERT INTO `account` VALUES ('1', 'aaa', '1000'); INSERT INTO `account` VALUES ('2', 'bbb', '1000'); INSERT INTO `account` VALUES ('3', 'ccc', '1000');
创建springboot工程
Maven依赖如下
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--web依赖 开启web--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--jdbc--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <!--mysql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <!--连接池--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.29</version> </dependency> <!--lombok插件库--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <scope>provided</scope> </dependency> </dependencies>
application.yml(这里使用yml配置文件)
http.encoding: #表示用于解码URI的字符编码。 charset: UTF-8 enable: true force: true server: port: 8801 spring.datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8 username: root password: 123456
代码实现
entity
@Data //lombok插件 @ToString public class Account { private int id; private String name; private double money; }
dao
public interface IAccountDAO { int add(Account account); int update(Account account); int delete(int id); Account findAccountById(int id); List<Account> findAccountList(); }
daoImpl
@Repository public class AccountDAOImpl implements IAccountDAO { @Autowired private JdbcTemplate jdbcTemplate; @Override public int add(Account account) { return jdbcTemplate.update("insert into account(name, money) values(?, ?)", account.getName(), account.getMoney()); } @Override public int update(Account account) { return jdbcTemplate.update("UPDATE account SET NAME=? ,money=? WHERE id=?", account.getName(), account.getMoney(), account.getId()); } @Override public int delete(int id) { return jdbcTemplate.update("DELETE from TABLE account where id=?", id); } @Override public Account findAccountById(int id) { List<Account> list = jdbcTemplate.query("select * from account where id = ?", new Object[]{id}, new BeanPropertyRowMapper(Account.class)); if (list != null && list.size() > 0) { return list.get(0); } else { return null; } } @Override public List<Account> findAccountList() { List<Account> list = jdbcTemplate.query("select * from account", new Object[]{}, new BeanPropertyRowMapper(Account.class)); if (null != list && list.size() > 0) { return list; } else { return null; } } }
service
public interface IAccountService { int add(Account account); int update(Account account); int delete(int id); Account findAccountById(int id); java.util.List<Account> findAccountList(); }
serviceImpl
@Service public class AccountServiceImpl implements IAccountService { @Autowired IAccountDAO accountDAO; @Override public int add(Account account) { return accountDAO.add(account); } @Override public int update(Account account) { return accountDAO.update(account); } @Override public int delete(int id) { return accountDAO.delete(id); } @Override public Account findAccountById(int id) { return accountDAO.findAccountById(id); } @Override public List<Account> findAccountList() { return accountDAO.findAccountList(); } }
controller
@RestController @RequestMapping("/account") public class AccountController { @Autowired IAccountService accountService; @RequestMapping(value = "/list", method = RequestMethod.GET) public List<Account> getAccounts() { return accountService.findAccountList(); } @GetMapping(value = "/{id}") public Account getAccountById(@PathVariable("id") int id) { return accountService.findAccountById(id); } @PutMapping(value = "/{id}") public String updateAccount(@PathVariable("id") int id, @RequestParam(value = "name", required = true) String name, @RequestParam(value = "money", required = true) double money) { Account account = new Account(); account.setMoney(money); account.setName(name); account.setId(id); int t = accountService.update(account); if (t == 1) { return account.toString(); } else { return "fail"; } } @RequestMapping(value = "", method = RequestMethod.POST) public String postAccount(@RequestParam(value = "name") String name, @RequestParam(value = "money") double money) { Account account = new Account(); account.setMoney(money); account.setName(name); int t = accountService.add(account); if (t == 1) { return account.toString(); } else { return "fail"; } } }
springbootMain
@SpringBootApplication @Configuration @ComponentScan(basePackages = { "com.example.test.*" })//扫描包路径注解(多个包时用,隔开) public class ApplicationMain { public static void main(String[] args) { SpringApplication.run(ApplicationMain.class, args); } }
遇到的问题
数据库插入中文乱码:
- 配置文件中没有使用
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8
更改数据库配置文件
mysql安装路劲\MySQL\MySQL Server 5.5 -> my.ini文件 character-set-server=latin1 -> utf8 default-character-set=latin1 -> utf8
- 配置文件中没有使用