SpringBoot 整合Druid数据源+MyBatis注解版

  1. Druid数据源yml配置文件

    spring:
      datasource:
        druid:
    
    #   数据源基本配置
    
          username: root
          password: root
          driver-class-name: com.mysql.jdbc.Driver
          url: jdbc:mysql://localhost:3306/db_test
          type: com.alibaba.druid.pool.DruidDataSource
    
    #   数据源其他配置
    
          initialSize: 5
          minIdle: 5
          maxActive: 20
          maxWait: 60000
          timeBetweenEvictionRunsMillis: 60000
          minEvictableIdleTimeMillis: 300000
          validationQuery: SELECT 1 FROM DUAL
          testWhileIdle: true
          testOnBorrow: false
          testOnReturn: false
          poolPreparedStatements: true
    
    #   配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
    
          filters: stat,wall,slf4j
          maxPoolPreparedStatementPerConnectionSize: 20
          useGlobalDataSourceStat: true
          connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
  2. Druid数据源java配置文件

    import com.alibaba.druid.pool.DruidDataSource;
    import com.alibaba.druid.support.http.StatViewServlet;
    import com.alibaba.druid.support.http.WebStatFilter;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.boot.web.servlet.FilterRegistrationBean;
    import org.springframework.boot.web.servlet.ServletRegistrationBean;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    import javax.sql.DataSource;
    import java.util.Arrays;
    import java.util.HashMap;
    import java.util.Map;
    
    @Configuration
    public class DruidDataSourceConfig {
        @ConfigurationProperties(prefix = "spring.datasource.druid")
        @Bean
        public DataSource druid(){
            return new DruidDataSource();
        }
    
        /**
         * 配置Druid的监控
         *  1、配置一个管理后台的Servlet
         * @return
         */
        @Bean
        public ServletRegistrationBean statViewServlet(){
            ServletRegistrationBean bean=new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
            Map<String,String> initParams=new HashMap<>();
            initParams.put("loginUsername","admin");
            initParams.put("loginPassword","admin");
            initParams.put("allow","");//默认就是允许所有访问
            initParams.put("deny","192.168.15.21");
            bean.setInitParameters(initParams);
            return bean;
        }
    
        /**
         *  2、配置一个web监控的filter
         * @return
         */
        @Bean
        public FilterRegistrationBean webStatFilter(){
            FilterRegistrationBean bean=new FilterRegistrationBean();
            bean.setFilter(new WebStatFilter());
            Map<String,String> initParams = new HashMap<>();
            initParams.put("exclusions","*.js,*.css,/druid/*");
            bean.setInitParameters(initParams);
            bean.setUrlPatterns(Arrays.asList("/*"));
            return  bean;
        }
    
    }
  3. MyBatis java配置文件

    @Configuration
    public class MyBatisConfig {
    
        @Bean
        public ConfigurationCustomizer configurationCustomizer(){
            return new ConfigurationCustomizer() {
                @Override
                public void customize(org.apache.ibatis.session.Configuration configuration) {
                    //-自动使用驼峰命名属性映射字段   userId    user_id
                    configuration.setMapUnderscoreToCamelCase(true);
                    //使用列别名替换列名 select user as User
                    configuration.setUseColumnLabel(true);
                }
            };
        }
    }
  4. 开启@Mapper注解扫描
    这里写图片描述

  5. dao层

    @Mapper
    public interface EmployeeMapper {
    
        @Options(useGeneratedKeys = true,keyProperty = "emp.empNo")
        @Insert("INSERT INTO `employee_emp` (`empname`, `sex`, `hiredate`, `deptno`) VALUES (#{emp.empName},#{emp.sex},#{emp.hireDate},#{emp.dept.deptNo})")
        int addEmp(@Param("emp") Employee employee);
    
        @Delete("DELETE FROM employee_emp WHERE employee_emp.empno=#{id}")
        int deleteEmp(Integer id);
    
        @Update("UPDATE `employee_emp` SET `empname`=#{emp.empName} WHERE (`empno`=#{emp.empNo})")
        int updateEmp(@Param("emp") Employee employee);
    
        @Select("SELECT * FROM employee_emp WHERE empno=#{id}")
        Employee queryEmp(Integer id);
    }
  6. 测试类

    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class EmployeeMapperTest {
        @Autowired
        private EmployeeMapper employeeMapper;
    
        @Test
        public void addEmp() {
            Dept dept=new Dept();
            dept.setDeptNo(5);
            Employee employee=new Employee("sa","男",new Date(),dept);
            int i = employeeMapper.addEmp(employee);
            System.err.println("受影响的行数:  "+i);
        }
    
        @Test
        public void deleteEmp() {
            int i = employeeMapper.deleteEmp(6);
            System.err.println("受影响的行数:  "+i);
        }
    
        @Test
        public void updateEmp() {
            Employee employee=new Employee();
            employee.setEmpName("sadfv");
            employee.setEmpNo(7);
            int i = employeeMapper.updateEmp(employee);
            System.err.println("受影响的行数:  "+i);
        }
    
        @Test
        public void queryEmp() {
            Employee employee = employeeMapper.queryEmp(3);
            System.err.println(employee);
        }
    }

    红线报错解决方法:
    这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值