mybatis内置参数
mybatis默认还有两个内置参数:
-
_parameter;代表整个参数
-
单个参数:_parameter就是这个参数
-
多个参数:参数会被封装为一个map; _parameter就是代表这个map
-
-
_databaseId;如果配置了DatabaseIdProvider标签
- _databaseId就是代表当前数据库的别名
配置DatabaseIdProvider标签
在配置文件中配置
<databaseIdProvider type="DB_VENDOR"><property name="MySQL" value="mysql"/><property name="Oracle" value="oracle"/></databaseIdProvider>
public List<Employee> getEmpsTestInnerParameter(Employee employee);
<!-- public List<Employee> getEmpsTestInnerParameter(Employee employee);-->
<select id="getEmpsTestInnerParameter" resultType="com.atguigu.mybatis.bean.Employee">
<!--<bind name = "_lastName" value = "'%'+lastName+'%'"/>-->
<if test = "_databaseId=='mysql'">select * from tb1_employee<if test = "_parameter!=null">where last_name like #{_parameter.lastName}</if>
</if><if test = "_databaseId == 'oracle'">select * from employees<if test = "_parameter!=null">where last_name like #{_parameter.lastName}</if></if></select>
@Testpublic void test04() throws IOException {SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();SqlSession sqlSession = sqlSessionFactory.openSession();try{EmployeeMapperDynamicSQL mapper = sqlSession.getMapper(EmployeeMapperDynamicSQL.class);Employee employee = new Employee();employee.setLastName("%a%");List<Employee> emps = mapper.getEmpsTestInnerParameter(employee);for (Employee e : emps){System.out.println(e);}}finally {sqlSession.close();}}