// 引入Druid数据源
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.6</version>
</dependency>
// 引入MybatisPlus
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
// 引入Clickhouse JDBC驱动
<dependency>
<groupId>ru.yandex.clickhouse</groupId>
<artifactId>clickhouse-jdbc</artifactId>
<version>0.3.1</version>
</dependency>
@Configuration
public class DruidConfig {
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource druidDataSource() {
return new DruidDataSource();
}
}
@Configuration
@MapperScan("com.example.mapper")
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
return new MybatisPlusInterceptor();
}
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
@Configuration
public class ClickhouseConfig {
@Value("${clickhouse.url}")
private String url;
@Value("${clickhouse.username}")
private String username;
@Value("${clickhouse.password}")
private String password;
@Bean
public DataSource clickhouseDataSource() {
ClickHouseDataSource dataSource = new ClickHouseDataSource(url, username, password);
return dataSource;
}
}
@Configuration
public class ClickhouseSqlSessionFactoryConfig {
@Autowired
@Qualifier("clickhouseDataSource")
private DataSource clickhouseDataSource;
@Bean(name = "clickhouseSqlSessionFactory")
public SqlSessionFactory clickhouseSqlSessionFactory() throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(clickhouseDataSource);
return bean.getObject();
}
@Bean(name = "clickhouseSqlSessionTemplate")
public SqlSessionTemplate clickhouseSqlSessionTemplate() throws Exception {
return new SqlSessionTemplate(clickhouseSqlSessionFactory());
}
}
@Configuration
@EnableTransactionManagement
public class TransactionManagementConfig {
@Autowired
@Qualifier("druidDataSource")
private DataSource dataSource;
@Bean
public DataSourceTransactionManager transactionManager() {
return new DataSourceTransactionManager(dataSource);
}
}
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/{id}")
public User getUserById(@PathVariable Long id) {
return userService.getById(id);
}
@PostMapping
public boolean addUser(@RequestBody User user) {
return userService.save(user);
}
@PutMapping
public boolean updateUser(@RequestBody User user) {
return userService.updateById(user);
}
@DeleteMapping("/{id}")
public boolean deleteUser(@PathVariable Long id) {
return userService.removeById(id);
}
}
@TableName("user")
public class User {
@TableId
private Long id;
@TableField("name")
private String username;
@TableField("age")
private Integer age;
}