在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.blogs和security.users引用的表。
不好意思?什么是凭证?你能给我一段XML格式的代码吗? – kenneth
凭证我的意思是数据库用户名/密码。更新了包含示例配置的答案。 –