在mybatis-config.xml中,不同的用户如何使用不同的用户名登录到同一个数据源?

问题描述:

在mybatis-config.xml中,不同的用户如何使用不同的用户名登录到同一个数据源?例如,我在一个独特的Oracle数据源中有“学生”,“教师”和“管理员”三种不同的模式。我应该如何配置mybatis让不同的用户通过不同的用户名登录唯一的数据源?它是否必须配置多个“环境”部分?在mybatis-config.xml中,不同的用户如何使用不同的用户名登录到同一个数据源?

上面有一些疑惑的概念,让我说我的问题: 我可以配置多个数据源具有相同的驱动程序和url属性,但用户名不同吗?

您可以使用可以访问所有三个用户/模式的凭据来配置单个数据源。

在你的mybatis查询中,你需要在表名前添加用户/模式名。

<?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> 
    <environments default="development"> 
    <environment id="development"> 
     <transactionManager type="JDBC"/> 
     <dataSource type="POOLED"> 
     <property name="driver" value="${driver}"/> 
     <property name="url" value="${url}"/> 
     <property name="username" value="${username}"/> 
     <property name="password" value="${password}"/> 
     </dataSource> 
    </environment> 
    </environments> 
    <mappers> 
    <mapper resource="BlogMapper.xml"/>  
    </mappers> 
</configuration> 

BlogMapper.xml

<?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="org.mybatis.example.BlogMapper"> 

    <select id="selectBlog" resultType="Blog"> 
    select * from blog.blogs where id = #{id} 
    </select> 

    <select id="selectUser" resultType="User"> 
    select * from security.users where id = #{id} 
    </select> 

</mapper> 

注意事项使用blog.blogssecurity.users引用的表。

+0

不好意思?什么是凭证?你能给我一段XML格式的代码吗? – kenneth

+0

凭证我的意思是数据库用户名/密码。更新了包含示例配置的答案。 –