在大部分系统中,数据的读取、存储是很重要的一个步骤。数据库也多种多样,集成的方式也较多。推荐Spring Boot + MyBatis Plus的方式。省去很多很多步骤。
添加依赖
mybatis
| 12
 3
 4
 5
 
 | <dependency><groupId>com.baomidou</groupId>
 <artifactId>mybatis-plus-boot-starter</artifactId>
 <version>3.4.0</version>
 </dependency>
 
 | 
连接池
| 12
 3
 4
 5
 
 | <dependency><groupId>com.alibaba</groupId>
 <artifactId>druid</artifactId>
 <version>1.1.21</version>
 </dependency>
 
 | 
jdbc驱动
| 12
 3
 4
 5
 
 | <dependency><groupId>mysql</groupId>
 <artifactId>mysql-connector-java</artifactId>
 <version>5.1.47</version>
 </dependency>
 
 | 
配置文件
数据库信息配置
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 
 | spring:application:
 name: mysql-demo
 
 datasource:
 type: com.alibaba.druid.pool.DruidDataSource
 driver-class-name: com.mysql.jdbc.Driver
 jdbc-url: jdbc:mysql://localhost:3306/technotes?useUnicode=true&characterEncoding=utf8
 url: ${spring.datasource.jdbc-url}
 username: root
 password: xxx
 
 | 
配置数据库mapper的包
| 12
 3
 4
 5
 6
 7
 
 | @MapperScan(basePackages = {"com.technotes.mysqldemo.mybatis.dao"})@SpringBootApplication
 public class MysqlDemoApplication {
 public static void main(String[] args) {
 SpringApplication.run(MysqlDemoApplication.class, args);
 }
 }
 
 | 
创建数据库表
举例创建一个简单的 student表
| 12
 3
 4
 5
 
 | CREATE TABLE `t_student` (`id` INT NOT NULL AUTO_INCREMENT,
 `name` VARCHAR(45) NULL,
 `age` INT NULL,
 PRIMARY KEY (`id`));
 
 | 
MyBatis Generator的使用
MyBatis generator 可以根据数据库表生成对应 model、mapper、service等,推荐使用。
主要代码
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 
 | DataSourceConfig dsc = new DataSourceConfig();
 dsc.setDbType(DbType.MYSQL);
 dsc.setDriverName("com.mysql.jdbc.Driver");
 dsc.setUsername("root");
 dsc.setPassword("123");
 dsc.setUrl("jdbc:mysql://localhost:3306/technotes");
 mpg.setDataSource(dsc);
 
 
 StrategyConfig strategy = new StrategyConfig();
 
 strategy.setNaming(NamingStrategy.underline_to_camel);
 strategy.setTablePrefix("t_");
 
 strategy.setInclude("t_student");
 strategy.setSuperServiceClass(IService.class);
 strategy.setSuperServiceImplClass(ServiceImpl.class);
 strategy.setSuperMapperClass(null);
 
 | 
服务调用
controller编写
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 
 | 
 @Autowired
 private IStudentService studentService;
 
 
 @ResponseBody
 @RequestMapping("/add")
 public Student add(@RequestParam(required = false) String name, @RequestParam(required = false) Integer age) {
 Student student = new Student();
 student.setName(name);
 student.setAge(age);
 
 studentService.save(student);
 return student;
 }
 
 | 
调用
 http://localhost:8080/student/add?name=name1&age=24
返回
| 12
 3
 4
 5
 
 | {"id": 2,
 "name": "name1",
 "age": 24
 }
 
 | 
附
相关demo源码 见 Github