162_SpringBoot_数据访问_druid_mybatis
【摘要】 数据访问_druid_mybatis
导入JDBC场景 (原生 HikariDataSource)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
导入驱动(官方不导入驱动,因为不知道业务使用什么数据库)
默认版本:<mysql.version>8.0.22</mysql.version>
手动导入:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<!-- <version>5.1.49</version>-->
</dependency>
导入 druid
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.17</version>
</dependency>
@Configuration
@ConditionalOnClass({DruidDataSource.class})
@AutoConfigureBefore({DataSourceAutoConfiguration.class})
@EnableConfigurationProperties({DruidStatProperties.class, DataSourceProperties.class})
@Import({DruidSpringAopConfiguration.class, DruidStatViewServletConfiguration.class, DruidWebStatFilterConfiguration.class, DruidFilterConfiguration.class})
public class DruidDataSourceAutoConfigure {
private static final Logger LOGGER = LoggerFactory.getLogger(DruidDataSourceAutoConfigure.class);
public DruidDataSourceAutoConfigure() {
}
@Bean(
initMethod = "init"
)
@ConditionalOnMissingBean
public DataSource dataSource() {
LOGGER.info("Init DruidDataSource");
return new DruidDataSourceWrapper();
}
}
druid application.yaml 相关配置
#@EnableConfigurationProperties({DruidStatProperties.class, DataSourceProperties.class})
#spring:
# datasource:
# url: jdbc:mysql://localhost:3306/db_account
# username: root
# password: 123456
# driver-class-name: com.mysql.jdbc.Driver
# https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter
#jdbc
spring:
datasource:
druid:
url: jdbc:mysql://localhost:3306?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: root
password: szc.2020
driver-class-name: com.mysql.jdbc.Driver
initial-size: 50
# 监控配置
# 配置监控页功能
stat-view-servlet:
enabled: true
login-password: admin
login-username: admin
resetEnable: false
#web监控
web-stat-filter:
enabled: true
url-pattern: /*
exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'
# 底层开启功能,stat(sql监控),wall(防火墙)
filter:
stat: #sql监控
slow-sql-millis: 10000
logSlowSql: true
enabled: true
wall: #防火墙
enabled: true
config:
drop-table-allow: false
一 配置模式
mapper.Java & mapper.xml 实现
@Mapper
public interface AccountMapper {
public Account getAcct(Long id);
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.alex.springboot_webadmin.mapper.AccountMapper">
<!-- public Account getAcct(Long id); -->
<select id="getAcct" resultType="com.alex.springboot_webadmin.bean.Account">
select * from account where id=#{id}
</select>
</mapper>
service
@Service
public class AccountService {
@Autowired
AccountMapper accountmapper;
public Account getAccbyid(Long id){
return accountmapper.getAcct(id);
}
}
@Slf4j
@Controller
public class IndexController {
@Autowired
AccountService accountService;
@ResponseBody
@GetMapping("/acc")
public Account getById(@RequestParam("id") Long id){
return accountService.getAccbyid(id);
}
}
二 注解模式 & 混合模式
mapper注解&配置混合模式 且没有注释 mapper,利用mapperscan自动注入
public interface CityMapper {
@Select("select * from city where id=#{id}")
City getById(Long id);
void saveCity(City city);
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.alex.springboot_webadmin.mapper.CityMapper">
<insert id="insert" useGeneratedKeys="true" keyProperty="id">
insert into city(`name`,`state`,`country`) values(#{name},#{state},#{country})
</insert>
</mapper>
//@ServletComponentScan(basePackages = "com.alex")
@MapperScan(basePackages = "com.alex.springboot_webadmin.mapper")
@SpringBootApplication
public class SpringbootWebadminApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootWebadminApplication.class, args);
}
}
service & controller
@Service
public class CityService {
@Autowired
CityMapper cityMapper;
public City getcityByid(Long id){
return cityMapper.getById(id);
}
public void saveCity(City city){
cityMapper.saveCity(city);
}
}
@Autowired
CityService cityService;
@ResponseBody
@GetMapping("/getcity")
public City getcity( @RequestParam("id") Long id ){
return cityService.getcityByid(id);
}
@GetMapping("/savecity")
public void saveCity2 (@RequestParam("city") City city){
cityService.saveCity(city);
}
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)