162_SpringBoot_数据访问_druid_mybatis

举报
alexsully 发表于 2021/09/28 15:10:43 2021/09/28
【摘要】 数据访问_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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。