Mybatis Adapter is the Mybatis adapter for jCasbin, which provides interfaces for loading policies from Mybatis and saving policies to it.
<dependency>
<groupId>org.casbin</groupId>
<artifactId>mybatis-adapter</artifactId>
<version>version</version>
</dependency>
package com.company.example;
import org.casbin.jcasbin.main.Enforcer;
import org.casbin.jcasbin.util.Util;
import org.casbin.adapter.MybatisAdapter;
public class Example {
public void test() {
Enforcer e = new Enforcer("examples/rbac_model.conf", "examples/rbac_policy.csv");
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/tbl";
String username = "YourUsername";
String password = "YourPassword";
MybatisAdapter a = new MybatisAdapter(driver, url, username, password, true);
// Save policy to DB
a.savePolicy(e.getModel());
// Load policy from DB
a.loadPolicy(e.getModel());
}
}
conditionsToMyBatisQuery() is a function that converts multiple query conditions into a MyBatis query statement.
You can use the GetAllowedObjectConditions() API of Casbin to get conditions,
and choose the way of combining conditions through CombineType.
conditionsToMyBatisQuery() allows Casbin to be combined with SQL, and you can use it to implement many functions.
Security Note: This API executes SQL conditions directly. Ensure that conditions are generated by Casbin's
GetAllowedObjectConditions() or other trusted sources, not from untrusted user input, to prevent SQL injection attacks.
package com.company.example;
import org.casbin.jcasbin.main.Enforcer;
import org.casbin.adapter.MybatisAdapter;
import org.casbin.adapter.CombineType;
import org.casbin.adapter.CasbinRule;
import java.util.List;
import java.util.ArrayList;
public class ConditionsExample {
public void test() {
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/casbin";
String username = "YourUsername";
String password = "YourPassword";
MybatisAdapter a = new MybatisAdapter(driver, url, username, password, true);
Enforcer e = new Enforcer("examples/rbac_model.conf", a);
// Get allowed object conditions from Casbin
// For example: ["category_id = 1", "author = 'alice'"]
List<String> conditions = new ArrayList<>();
conditions.add("v0 = 'alice'");
conditions.add("v1 = 'data1'");
// Combine conditions with OR
List<CasbinRule> resultsOr = a.conditionsToMyBatisQuery(conditions, CombineType.OR);
// SQL: SELECT * FROM casbin_rule WHERE (v0 = 'alice') OR (v1 = 'data1')
// Combine conditions with AND
List<CasbinRule> resultsAnd = a.conditionsToMyBatisQuery(conditions, CombineType.AND);
// SQL: SELECT * FROM casbin_rule WHERE (v0 = 'alice') AND (v1 = 'data1')
// Process results
for (CasbinRule rule : resultsOr) {
System.out.println(rule.toString());
}
}
}This project is under Apache 2.0 License. See the LICENSE file for the full license text.