MyBatis动态设置要连接的数据库地址,用户名,密码

一、前言
使用Mybatis连接数据库,可能一般我们都是在MyBatis的全局配置文件中去进行配置要连接数据库的url,用户名,密码,但是我们有的时候会有需要动态设置要连接的数据库url,用户名,密码的需求,比如我们可能是从远程动态获取要连接的数据库的连接配置参数,下面就来介绍一下Mybatis动态设置要连接的数据库配置参数方法

二、MyBatis动态设置数据库连接配置

(1)Mybatis的全局配置全部由代码动态创建

 DataSource dataSource = new PooledDataSource(
                "com.mysql.jdbc.Driver",
                url,
                username,
                password);
        Environment environment = new Environment("dev", new JdbcTransactionFactory(), dataSource);
        Configuration configuration = new Configuration(environment);
        configuration.addMapper(UserMapper.class);
        configuration.setLogImpl(StdOutImpl.class);
        configuration.setMapUnderscoreToCamelCase(true);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
        sEnvDBSession = sqlSessionFactory.openSession();

上面的代码就是通过代码来创建MyBatis的全局配置configuration,包括指定Mapper的注册配置,控制台打印SQL的 配置, 开启驼峰命名自动映射配置; 这样数据库的连接配置参数也是通过DataSource动态来设置的,也就实现了动态设置数据库连接配置参数的目的;
但是上面这种方式还是不够优雅的,一旦配置多的情况下,我们需要在代码中来写很多的配置,但是实际上上面除了数据库的连接配置是需要动态配置的,其他的如Mapper的注册配置,控制台打印SQL的 配置, 开启驼峰命名自动映射配置这些都是固定的,所以我们还是希望能在配置文件中去进行这些配置,可以通过下面这种方式来实现;

(2)配置文件和代码结合方式实现MyBatis的配置

MyBatis的全局配置文件 src/main/resources/mybatis-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <settings>
        <!-- 控制台打印sql语句 -->
        <setting name="logImpl" value="STDOUT_LOGGING"/>
        <!-- 开启驼峰命名自动映射配置 -->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="com/dreame/commontool/database/mapper/UserMapper.xml"/>
    </mappers>

</configuration>

注意看上面的全局配置文件中数据库连接配置中dataSource中driver,url,username,password属性值都是通过
${jdbc.xxx}动态获取属性的方式;同时配置了Mapper的注册,控制台打印SQL, 开启驼峰命名自动映射等配置;
然后我们在代码中创建SqlSessionFactory的时候将这些属性值动态传进来即可,如下

 try {
            Properties properties = new Properties();
            properties.setProperty("jdbc.driver", "com.mysql.jdbc.Driver");
            properties.setProperty("jdbc.url", url);
            properties.setProperty("jdbc.username", username);
            properties.setProperty("jdbc.password", password);
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream, properties);
            sEnvDBSession = sqlSessionFactory.openSession();
          
        } catch (IOException e) {
            e.printStackTrace();
        }

注意上面代码中setProperty的属性名jdbc.driver,jdbc.url,jdbc.username,jdbc.password要和配置文件中引用的属性名要对应上;
这样就实现了数据库连接配置参数是动态设置的,其他配置参数是直接从配置文件中固定配置的需求;
相对比较优雅的实现了MyBatis动态设置数据库连接配置参数;

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MyBatis-Plus是一个基于MyBatis的极简、高性能、增强的ORM框架,可以快速、便捷地进行数据库操作。连接数据库的具体步骤如下: 1. 引入mybatis-plus的依赖。在Maven项目中,在pom.xml文件中添加以下依赖: ``` <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>x.x.x</version> </dependency> ``` 其中,x.x.x表示mybatis-plus的版本号。 2. 配置数据源。在application.yml或application.properties文件中添加数据源配置,如下所示: ``` spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai spring.datasource.username=root spring.datasource.password=root ``` 其中,spring.datasource.driver-class-name表示数据库驱动程序的类名,spring.datasource.url表示数据库连接URL,spring.datasource.username表示数据库用户名,spring.datasource.password表示数据库密码。 3. 配置MyBatis-Plus。在application.yml或application.properties文件中添加MyBatis-Plus的配置,如下所示: ``` mybatis-plus.mapper-locations=classpath:/mapper/*.xml mybatis-plus.type-aliases-package=com.example.entity ``` 其中,mybatis-plus.mapper-locations表示mapper文件的位置,mybatis-plus.type-aliases-package表示实体类所在的包。 4. 编写mapper接口。在mapper接口中使用MyBatis-Plus的注解来进行数据库操作,如下所示: ``` @Repository @Mapper public interface UserMapper extends BaseMapper<User> { } ``` 其中,@Repository和@Mapper注解分别表示这是一个Spring的Repository和MyBatis的Mapper,UserMapper继承BaseMapper<User>,即可直接使用MyBatis-Plus提供的CRUD方法。 5. 在Service中调用mapper接口。在Service中注入mapper接口的实例,即可调用其中的方法进行数据库操作,如下所示: ``` @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public User getUserById(Long id) { return userMapper.selectById(id); } } ``` 其中,@Autowired注解表示自动注入UserMapper的实例,selectById方法是MyBatis-Plus提供的查询方法。 至此,使用MyBatis-Plus连接数据库的步骤就完成了。需要注意的是,在使用MyBatis-Plus时,可以大大简化数据库操作,但是也需要注意数据库的安全性,比如避免SQL注入等安全漏洞。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值