springboot 使用mybatis与mybatis-generator与druid (gradle构建)

1. build.gradle 中声明依赖

版本可以到 https://mvnrepository.com 中查询

project(":repo") {
    dependencies {
        compile "org.mybatis.generator:mybatis-generator-core:1.3.7"
        compile "mysql:mysql-connector-java:8.0.16"
        compile "org.mybatis:mybatis:3.4.6"
        compile "com.alibaba:druid-spring-boot-starter:1.1.10"
        compile "org.springframework:spring-jdbc:5.1.5.RELEASE"
        compile "org.mybatis:mybatis-spring:1.3.2"
    }
}

2. mybatis-generator

详细的说明可看官方文档

a. xml文件 指定生成的model,mapper,xml存放目录以及名称

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>

    <context id="DB2Tables" targetRuntime="MyBatis3">
    <!-- 指定连接 数据库账号与密码-->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://127.0.0.1:3306/springboot?useUnicode=true&amp;characterEncoding=utf-8&amp;serverTimezone=UTC"
                        userId="root"
                        password="password">
        </jdbcConnection>

        <javaTypeResolver >
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>
		<!--指定 model生成的目录 -->
        <javaModelGenerator targetPackage="com.pdz.repo.model" targetProject="repo/src/main/java">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
        </javaModelGenerator>
		<!--指定 mapper文件生成的目录 -->
        <sqlMapGenerator targetPackage="mapper"  targetProject="repo/src/main/resources">
            <property name="enableSubPackages" value="true" />
        </sqlMapGenerator>
	<!--指定 xml生成的目录 -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.pdz.repo.mapper"  targetProject="repo/src/main/java">
            <property name="enableSubPackages" value="true" />
        </javaClientGenerator>
		<!--指定 要生成对应文件的表  -->
        <table schema="springboot" tableName="collect_url" domainObjectName="UrlCollector" >
            <generatedKey column="id" sqlStatement="JDBC" ></generatedKey>
        </table>

    </context>
</generatorConfiguration>

b. java文件
直接运行即可

public class Generator {
	// 复制自官网
    public static void main(String[] args) throws Exception{
        List<String> warnings = new ArrayList<String>();
        boolean overwrite = true;
        ConfigurationParser cp = new ConfigurationParser(warnings);
        // 在 指定xml配置文件时 有所不同 在目录指向resource下
        Configuration config = cp.parseConfiguration(Thread.currentThread()
                .getContextClassLoader().getResourceAsStream("generatorConfig.xml"));
        DefaultShellCallback callback = new DefaultShellCallback(overwrite);
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
        myBatisGenerator.generate(null);
    }
}

文件结构如下
在这里插入图片描述

3. druid

druid配置
password 可以用 **** 后面在代码中重写这里的配置

druid.driverClassName=com.mysql.jdbc.Driver 
druid.url=jdbc:mysql://127.0.0.1:3306/springboot?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
druid.username=root
druid.password=****
druid.initialSize=10
druid.minIdle=6
druid.maxActive=50
druid.maxWait=60000
druid.timeBetweenEvictionRunsMillis=60000
druid.minEvictableIdleTimeMillis=300000
druid.validationQuery=SELECT 'x'
druid.testWhileIdle=true
druid.testOnBorrow=false
druid.testOnReturn=false
druid.poolPreparedStatements=false
druid.maxPoolPreparedStatementPerConnectionSize=20
druid.filters=wall,stat

构建数据源bean 对于mybatis需要一个 SqlSessionFactory 也在这里构建

// 代码改动自 https://mrbird.cc/Spring-Boot-MyBatis%20Druid.html
@Configuration
@MapperScan(value = "com.pdz.repo.mapper", sqlSessionFactoryRef = "mysqlSqlSessionFactory") // 指定mapper扫描的目录 以及mybatis使用到的sqlSession
public class MysqlDataSourceConfig {

    @Primary
    @Bean(name = "mysqldatasource")
    @ConfigurationProperties("druid")
    public DataSource mysqlDataSource() {
        return DruidDataSourceBuilder.create().build();
    }

    @Bean(name = "mysqlTransactionManager")
    @Primary
    public DataSourceTransactionManager mysqlTransactionManager() {
        return new DataSourceTransactionManager(mysqlDataSource());
    }

    @Bean(name = "mysqlSqlSessionFactory")
    @Primary
    public SqlSessionFactory mysqlSqlSessionFactory(@Qualifier("mysqldatasource") DataSource dataSource)
            throws Exception {
        final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(dataSource);
        // 指定实现mapper的xml的扫描目录
        sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
                .getResources("classpath:/mapper/*.xml"));
        return sessionFactory.getObject();
    }

}

对于ConfigurationProperties它是在bean创建后把配置文件中的属性写入到bean中 大概查了一下用到的是BeanPostProcessor 我们也可以用相同的方法 修改初始化后的bean 重新对password赋值 我这里把密码写到了环境变量中 然后从环境变量中读取密码 (如果是用druid加密了密码 也可以把解密的公钥写到环境变量中)

@Component
public class PasswordSetter implements BeanPostProcessor {
	// 在bean初始化后调用
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
    	//判断是否是datasource bean
        if (DataSource.class.isAssignableFrom(bean.getClass())) {
            DruidDataSource dataSource = (DruidDataSource) bean;
            dataSource.setPassword(System.getenv("SQL_PASSWORD"));
        }
        return bean;
    }
}

4. mybatis

经过之前的步骤 到了这里已经可以直接使用mybatis
也可以写一个repo把mapper再包装一层

@Controller
@RequestMapping("/url")
public class UrlCollectController {

    @Autowired
    UrlCollectorMapper urlCollectorMapper;

    @GetMapping("/add")
    @ResponseBody
    public Object urlAdd() {
        UrlCollector urlCollector = new UrlCollector();
        urlCollector.setUrl("https://www.baidu.com");
        urlCollectorMapper.insertSelective(urlCollector);
        return "ok";
    }
}
1、这是Eclipse MyBatis generator 1.3.7插件的核心包 2、首先到Eclipse中下载 MyBatis Generator 1.3.7插件,下载完按步骤进行安装 打开Help > Eclipse Marketplace > Search > 输入框输入 MyBatis Generator 1.3.7 搜索 > Install 3、安装完之后重启Eclipse 然后在File > New > Other > 搜索MyBatis 会看到此插件,说明已经安装成功 4、此时我们创建一个 generatorConfig.xml 填写好各种配置(详细请看generatorConfig.xml)右键 > Run,实体类生成成功, 但是我们发现实体类、Dao、Mapper.xml 中的注释都是英文不是我们想要的中文注释,此时需要我们把刚下载的MyBatis Generator插件核心包 替换掉Eclipse刚安装好的MyBatis Generator插件核心包 替换步骤: 1>、打开Eclipse安装目录打开plugins文件夹找到org.mybatis.generator.core_1.3.7.201807042148.jar D:\tools\eclipse\plugins\org.mybatis.generator.core_1.3.7.201807042148.jar 2>、把刚下载的org.mybatis.generator.core_1.3.7.201807042148.jar替换掉旧的org.mybatis.generator.core_1.3.7.201807042148.jar 注意:新的jar名称必须和旧的jar名称相同 5、替换完之后重启Eclipse,再次配置好generatorConfig.xml 右键 > Run,实体类生成成功,次时我们打开实体类发现 已经有了中文注释 实体类中文注释:类名称、属性名称、方法名称、作者、版本号 Dao类注释:基本的增删改查方法注释 注意:实体类的注释都是映射的数据库表中的注释,如果数据库表和字段没有注释则生成的实体类也没有注释 6、此jar包也适用于MyBatis generator 1.3.6版本 替换步骤同上 (亲测绝对可以使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值