MyBatis主要的mybatis sql配置文件件有哪些?

现在的位置:
Mybatis 如何分多个配置文件
1、修改SqlSessionFactoryBean,或者继承该类, 增加configLocations, 移除 configLocation
private Resource[] configL
/*修改该方法*/
public void setConfigLocation(Resource configLocation){
this.configLocations = configLocation != null ? new Resource[] { configLocation } :
/*增加该方法*/
public void setConfigLocations(Resource[] configLocations) {
this.configLocations = configL
* 合并mybatis配置文件
public Document SQLConfigMap()
Document doc = DocumentHelper.createDocument();
doc.setXMLEncoding(&UTF-8&);
DocumentFactory documentFactory = new DocumentFactory();
DocumentType docType = documentFactory.createDocType(&configuration&,
&-//mybatis.org//DTD Config 3.0//EN&, &http://mybatis.org/dtd/mybatis-3-config.dtd&);
doc.setDocType(docType);
Element rootElement = doc.addElement(&configuration&);
rootElement.addElement(&typeAliases&);
rootElement.addElement(&mappers&);
public void readXML(Resource configXML, final Element elementTypeAlias,
final Element elementMapper)
// Document document =
SAXReader saxReader = new SAXReader();
// Element root = doc.getRootElement();
/*typeAliases合并*/
saxReader.addHandler(&/configuration/typeAliases/typeAlias&, new ElementHandler()
public void onEnd(ElementPath path)
Element row = path.getCurrent();
Element els = elementTypeAlias.addElement(&typeAlias&);
els.addAttribute(&alias&, row.attributeValue(&alias&)).addAttribute(&type&,
row.attributeValue(&type&));
row.detach();
public void onStart(ElementPath arg0)
// TODO Auto-generated method stub
/*mapper合并*/
saxReader.addHandler(&/configuration/mappers/mapper&, new ElementHandler()
public void onEnd(ElementPath path)
Element row = path.getCurrent();
Element els = elementMapper.addElement(&mapper&);
String mapper = row.attributeValue(&mapper&);
String resource = row.attributeValue(&resource&);
els.addAttribute(&mapper&, mapper);
els.addAttribute(&resource&, resource);
row.detach();
public void onStart(ElementPath arg0)
// TODO Auto-generated method stub
saxReader.read(configXML.getInputStream());
catch (Exception e)
// TODO Auto-generated catch block
e.printStackTrace();
* Build a {@code SqlSessionFactory} instance.
* The default implementation uses the standard MyBatis {@code XMLConfigBuilder}
* API to build a
* {@code SqlSessionFactory} instance based on an Reader.
* @return SqlSessionFactory
* @throws IOException if loading the config file failed
protected SqlSessionFactory buildSqlSessionFactory() throws IOException
Configuration configuration =
XMLConfigBuilder xmlConfigBuilder =
Document document = this.SQLConfigMap();
Element root = document.getRootElement();
Element elementMapper = root.element(&mappers&);
Element elementTypeAlias = root.element(&typeAliases&);
for (Resource configLocation : configLocations)
readXML(configLocation, elementTypeAlias, elementMapper);
// Reader reader = InputStream inputStream =
if (this.configLocations != null)
logger.debug(document.asXML());
InputStream inputSteam = new ByteArrayInputStream(document.asXML().getBytes());
xmlConfigBuilder = new XMLConfigBuilder(inputSteam, null, this.configurationProperties);
configuration = xmlConfigBuilder.getConfiguration();
if (inputSteam != null)
inputSteam.close();
inputSteam =
document =
if (this.logger.isDebugEnabled())
this.logger.debug(&Property 'configLocation' not specified,
using default MyBatis Configuration&);
configuration = new Configuration();
configuration.setVariables(this.configurationProperties);
if (hasLength(this.typeAliasesPackage))
String[] typeAliasPackageArray = tokenizeToStringArray(this.typeAliasesPackage,
ConfigurableApplicationContext.CONFIG_LOCATION_DELIMITERS);
for (String packageToScan : typeAliasPackageArray)
configuration.getTypeAliasRegistry().registerAliases(packageToScan);
if (this.logger.isDebugEnabled())
this.logger.debug(&Scanned package: '& + packageToScan + &' for aliases&);
if (!isEmpty(this.typeAliases))
for (Class&?& typeAlias : this.typeAliases)
configuration.getTypeAliasRegistry().registerAlias(typeAlias);
if (this.logger.isDebugEnabled())
this.logger.debug(&Registered type alias: '& + typeAlias + &'&);
if (!isEmpty(this.plugins))
for (Interceptor plugin : this.plugins)
configuration.addInterceptor(plugin);
if (this.logger.isDebugEnabled())
this.logger.debug(&Registered plugin: '& + plugin + &'&);
if (hasLength(this.typeHandlersPackage))
String[] typeHandlersPackageArray = tokenizeToStringArray(this.typeHandlersPackage,
ConfigurableApplicationContext.CONFIG_LOCATION_DELIMITERS);
for (String packageToScan : typeHandlersPackageArray)
configuration.getTypeHandlerRegistry().register(packageToScan);
if (this.logger.isDebugEnabled())
this.logger.debug(&Scanned package: '& + packageToScan + &' for type handlers&);
if (!isEmpty(this.typeHandlers))
for (TypeHandler&?& typeHandler : this.typeHandlers)
configuration.getTypeHandlerRegistry().register(typeHandler);
if (this.logger.isDebugEnabled())
this.logger.debug(&Registered type handler: '& + typeHandler + &'&);
if (xmlConfigBuilder != null)
xmlConfigBuilder.parse();
if (this.logger.isDebugEnabled())
this.logger.debug(&Parsed configuration file: '& + this.configLocations + &'&);
catch (Exception ex)
throw new NestedIOException(&Failed to parse config resource: & +
this.configLocations, ex);
ErrorContext.instance().reset();
if (this.transactionFactory == null)
this.transactionFactory = new SpringManagedTransactionFactory();
Environment environment = new Environment(this.environment, this.transactionFactory,
this.dataSource);
configuration.setEnvironment(environment);
if (this.databaseIdProvider != null)
configuration.setDatabaseId(this.databaseIdProvider.getDatabaseId(this.dataSource));
catch (SQLException e)
throw new NestedIOException(&Failed getting a databaseId&, e);
if (!isEmpty(this.mapperLocations))
for (Resource mapperLocation : this.mapperLocations)
if (mapperLocation == null)
XMLMapperBuilder xmlMapperBuilder = new XMLMapperBuilder(mapperLocation.getInputStream(),
configuration, mapperLocation.toString(), configuration.getSqlFragments());
xmlMapperBuilder.parse();
catch (Exception e)
throw new NestedIOException(&Failed to parse mapping resource: '& +
mapperLocation + &'&, e);
ErrorContext.instance().reset();
if (this.logger.isDebugEnabled())
this.logger.debug(&Parsed mapper file: '& + mapperLocation + &'&);
if (this.logger.isDebugEnabled())
this.logger.debug(&Property 'mapperLocations' was not specified or
no matching resources found&);
return this.sqlSessionFactoryBuilder.build(configuration);
【上篇】【下篇】
您可能还会对这些文章感兴趣!MyBatis学习 之 一、MyBatis简介与配置MyBatis+Spring+MySql
MyBatis学习 之 一、MyBatis简介与配置MyBatis+Spring+MySql
编辑日期: 字体:
一、MyBatis简介与配置MyBatis+Spring+MySql
1.1MyBatis简介
&&&&& MyBatis 是一个可以自定义SQL、存储过程和高级映射的持久层框架。MyBatis 摒除了大部分的JDBC代码、手工设置参数和结果集重获。MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型、Map 接口和POJO 到数据库记录。相对Hibernate和Apache OJB等“一站式”ORM解决方案而言,Mybatis 是一种“半自动化”的ORM实现。需要使用的Jar包:mybatis-3.0.2.jar(mybatis核心包)。mybatis-spring-1.0.0.jar(与Spring结合包)。
下载地址:
1.2MyBatis+Spring+MySql简单配置
1.2.1搭建Spring环境
1,建立maven的web项目;2,加入Spring框架、配置文件;3,在pom.xml中加入所需要的jar包(spring框架的、mybatis、mybatis-spring、junit等);4,更改web.xml和spring的配置文件;5,添加一个jsp页面和对应的Controller;6,测试。
可参照:。
1.2.2建立MySql数据库
建立一个学生选课管理数据库。表:学生表、班级表、教师表、课程表、学生选课表。逻辑关系:每个学生有一个班级;每个班级对应一个班主任教师;每个教师只能当一个班的班主任;
使用下面的sql进行建数据库,先建立学生表,插入数据(2条以上)。
更多sql请下载项目源文件,在resource/sql中。
/* 建立数据库 */
CREATE DATABASE STUDENT_MANAGER;
USE STUDENT_MANAGER;
/***** 建立student表 *****/
CREATE TABLE STUDENT_TBL
STUDENT_ID
VARCHAR(255) PRIMARY KEY,
STUDENT_NAME
VARCHAR(10) NOT NULL,
STUDENT_SEX
VARCHAR(10),
STUDENT_BIRTHDAY
VARCHAR(255)
/*插入学生数据*/
INSERT INTO STUDENT_TBL (STUDENT_ID,
STUDENT_NAME,
STUDENT_SEX,
STUDENT_BIRTHDAY,
1234567891011121314151617181920212223242526
/* 建立数据库 */CREATE DATABASE STUDENT_MANAGER;USE STUDENT_MANAGER;&/***** 建立student表 *****/CREATE TABLE STUDENT_TBL(
STUDENT_ID
VARCHAR(255) PRIMARY KEY,
STUDENT_NAME
VARCHAR(10) NOT NULL,
STUDENT_SEX
VARCHAR(10),
STUDENT_BIRTHDAY
VARCHAR(255));&/*插入学生数据*/INSERT INTO STUDENT_TBL (STUDENT_ID,
STUDENT_NAME,
STUDENT_SEX,
STUDENT_BIRTHDAY,
创建连接MySql使用的配置文件mysql.properties。
Mysql.properties代码
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/student_manager?user=root&password=limingnihao&useUnicode=true&characterEncoding=UTF-8
jdbc.driverClassName=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/student_manager?user=root&password=limingnihao&useUnicode=true&characterEncoding=UTF-8
1.2.3搭建MyBatis环境
顺序随便,现在的顺序是因为可以尽量的少的修改写好的文件。
1.2.3.1创建实体类: StudentEntity
public class StudentEntity implements Serializable {
private static final long serialVersionUID = 3606831L;
private ClassEntity classE
private Date studentB
private String studentID;
private String studentN
private String studentS
public ClassEntity getClassEntity() {
return classE
public Date getStudentBirthday() {
return studentB
public String getStudentID() {
return studentID;
public String getStudentName() {
return studentN
public String getStudentSex() {
return studentS
public void setClassEntity(ClassEntity classEntity) {
this.classEntity = classE
public void setStudentBirthday(Date studentBirthday) {
this.studentBirthday = studentB
public void setStudentID(String studentID) {
this.studentID = studentID;
public void setStudentName(String studentName) {
this.studentName = studentN
public void setStudentSex(String studentSex) {
this.studentSex = studentS
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
public class StudentEntity implements Serializable {& private static final long serialVersionUID = 3606831L; private ClassEntity classEntity; private Date studentBirthday; private String studentID; private String studentName; private String studentSex;
public ClassEntity getClassEntity() {
return classEntity; }& public Date getStudentBirthday() {
return studentBirthday; }& public String getStudentID() {
return studentID; }& public String getStudentName() {
return studentName; }& public String getStudentSex() {
return studentSex; }& public void setClassEntity(ClassEntity classEntity) {
this.classEntity = classEntity; }& public void setStudentBirthday(Date studentBirthday) {
this.studentBirthday = studentBirthday; }& public void setStudentID(String studentID) {
this.studentID = studentID; }& public void setStudentName(String studentName) {
this.studentName = studentName; }& public void setStudentSex(String studentSex) {
this.studentSex = studentSex; }}
1.2.3.2创建数据访问接口
Student类对应的dao接口:StudentMapper。
public interface StudentMapper {
public StudentEntity getStudent(String studentID);
public StudentEntity getStudentAndClass(String studentID);
public List&StudentEntity& getStudentAll();
public void insertStudent(StudentEntity entity);
public void deleteStudent(StudentEntity entity);
public void updateStudent(StudentEntity entity);
1234567891011121314
public interface StudentMapper {
public StudentEntity getStudent(String studentID);
public StudentEntity getStudentAndClass(String studentID);
public List&StudentEntity& getStudentAll();
public void insertStudent(StudentEntity entity);
public void deleteStudent(StudentEntity entity);
public void updateStudent(StudentEntity entity);}
1.2.3.3创建SQL映射语句文件
Student类的sql语句文件StudentMapper.xmlresultMap标签:表字段与属性的映射。Select标签:查询sql。
&?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="com.manager.data.StudentMapper"&
&resultMap type="StudentEntity" id="studentResultMap"&
&id property="studentID" column="STUDENT_ID"/&
&result property="studentName" column="STUDENT_NAME"/&
&result property="studentSex" column="STUDENT_SEX"/&
&result property="studentBirthday" column="STUDENT_BIRTHDAY"/&
&/resultMap&
&!-- 查询学生,根据id --&
&select id="getStudent" parameterType="String" resultType="StudentEntity" resultMap="studentResultMap"&
SELECT * from STUDENT_TBL ST
WHERE ST.STUDENT_ID = #{studentID}
&!-- 查询学生列表 --&
&select id="getStudentAll"
resultType="com.manager.data.model.StudentEntity" resultMap="studentResultMap"&
SELECT * from STUDENT_TBL
123456789101112131415161718192021222324252627
&?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="com.manager.data.StudentMapper"&& &resultMap type="StudentEntity" id="studentResultMap"&
&id property="studentID" column="STUDENT_ID"/&
&result property="studentName" column="STUDENT_NAME"/&
&result property="studentSex" column="STUDENT_SEX"/&
&result property="studentBirthday" column="STUDENT_BIRTHDAY"/& &/resultMap&
&!-- 查询学生,根据id --& &select id="getStudent" parameterType="String" resultType="StudentEntity" resultMap="studentResultMap"&
SELECT * from STUDENT_TBL ST
WHERE ST.STUDENT_ID = #{studentID}
&!-- 查询学生列表 --& &select id="getStudentAll"
resultType="com.manager.data.model.StudentEntity" resultMap="studentResultMap"&
SELECT * from STUDENT_TBL
&/select& &/mapper&
1.2.3.4创建MyBatis的mapper配置文件
在src/main/resource中创建MyBatis配置文件:mybatis-config.xml。typeAliases标签:给类起一个别名。com.manager.data.model.StudentEntity类,可以使用StudentEntity代替。Mappers标签:加载MyBatis中实体类的SQL映射语句文件。
&?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&
&typeAliases&
&typeAlias alias="StudentEntity" type="com.manager.data.model.StudentEntity"/&
&/typeAliases&
&mapper resource="com/manager/data/maps/StudentMapper.xml" /&
&/mappers&
&/configuration&
12345678910
&?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& &typeAliases&
&typeAlias alias="StudentEntity" type="com.manager.data.model.StudentEntity"/& &/typeAliases& &mappers&
&mapper resource="com/manager/data/maps/StudentMapper.xml" /& &/mappers&&/configuration&
1.2.3.5修改Spring 的配置文件
主要是添加SqlSession的制作工厂类的bean:SqlSessionFactoryBean,(在mybatis.spring包中)。需要指定配置文件位置和dataSource。和数据访问接口对应的实现bean。通过MapperFactoryBean创建出来。需要执行接口类全称和SqlSession工厂bean的引用。
&!-- 导入属性配置文件 --&
&context:property-placeholder location="classpath:mysql.properties" /&
&bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"&
&property name="driverClassName" value="${jdbc.driverClassName}" /&
&property name="url" value="${jdbc.url}" /&
&bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"&
&property name="dataSource" ref="dataSource" /&
&bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"&
&property name="configLocation" value="classpath:mybatis-config.xml" /&
&property name="dataSource" ref="dataSource" /&
&!— mapper bean --&
&bean id="studentMapper" class="org.mybatis.spring.MapperFactoryBean"&
&property name="mapperInterface" value="com.manager.data.StudentMapper" /&
&property name="sqlSessionFactory" ref="sqlSessionFactory" /&
12345678910111213141516171819202122
&!-- 导入属性配置文件 --&&context:property-placeholder location="classpath:mysql.properties" /&&&bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"& &property name="driverClassName" value="${jdbc.driverClassName}" /& &property name="url" value="${jdbc.url}" /&&/bean&&&bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"& &property name="dataSource" ref="dataSource" /&&/bean&&&bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"& &property name="configLocation" value="classpath:mybatis-config.xml" /& &property name="dataSource" ref="dataSource" /&&/bean&&&!— mapper bean --&&bean id="studentMapper" class="org.mybatis.spring.MapperFactoryBean"& &property name="mapperInterface" value="com.manager.data.StudentMapper" /& &property name="sqlSessionFactory" ref="sqlSessionFactory" /&&/bean&
也可以不定义mapper的bean,使用注解:
将StudentMapper加入注解
@Repository
@Transactional
public interface StudentMapper {
@Repository@Transactionalpublic interface StudentMapper {}
对应的需要在dispatcher-servlet.xml中加入扫描:
&bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"&
&property name="annotationClass" value="org.springframework.stereotype.Repository"/&
&property name="basePackage" value="com.liming.manager"/&
&property name="sqlSessionFactory" ref="sqlSessionFactory"/&
&bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"&
&property name="annotationClass" value="org.springframework.stereotype.Repository"/&
&property name="basePackage" value="com.liming.manager"/&
&property name="sqlSessionFactory" ref="sqlSessionFactory"/&
对应的需要在dispatcher-servlet.xml中加入扫描:
&bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"&
&property name="annotationClass" value="org.springframework.stereotype.Repository"/&
&property name="basePackage" value="com.liming.manager"/&
&property name="sqlSessionFactory" ref="sqlSessionFactory"/&
&bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"&
&property name="annotationClass" value="org.springframework.stereotype.Repository"/&
&property name="basePackage" value="com.liming.manager"/&
&property name="sqlSessionFactory" ref="sqlSessionFactory"/&
1.2.4测试StudentMapper
使用SpringMVC测试,创建一个TestController,配置tomcat,访问index.do页面进行测试:
@Controller
public class TestController {
@Autowired
private StudentMapper studentM
@RequestMapping(value = "index.do")
public void indexPage() {
StudentEntity entity = studentMapper.getStudent("");
System.out.println("name:" + entity.getStudentName());
123456789101112
@Controllerpublic class TestController {& @Autowired private StudentMapper studentMapper;
@RequestMapping(value = "index.do") public void indexPage() {
StudentEntity entity = studentMapper.getStudent("");
System.out.println("name:" + entity.getStudentName()); } }
使用Junit测试:
使用Junit测试:
@RunWith(value = SpringJUnit4ClassRunner.class)
@ContextConfiguration(value = "test-servlet.xml")
public class StudentMapperTest {
@Autowired
private ClassMapper classM
@Autowired
private StudentMapper studentM
@Transactional
public void getStudentTest(){
StudentEntity entity = studentMapper.getStudent("");
System.out.println("" + entity.getStudentID() + entity.getStudentName());
List&StudentEntity& studentList = studentMapper.getStudentAll();
for( StudentEntity entityTemp : studentList){
System.out.println(entityTemp.getStudentName());
123456789101112131415161718192021222324
使用Junit测试:Java代码@RunWith(value = SpringJUnit4ClassRunner.class)@ContextConfiguration(value = "test-servlet.xml")public class StudentMapperTest {
@Autowired private ClassMapper classMapper;
@Autowired private StudentMapper studentMapper;
@Transactional public void getStudentTest(){
StudentEntity entity = studentMapper.getStudent("");
System.out.println("" + entity.getStudentID() + entity.getStudentName());
List&StudentEntity& studentList = studentMapper.getStudentAll();
for( StudentEntity entityTemp : studentList){
System.out.println(entityTemp.getStudentName());
ps转:/blog/781671
本文固定链接:
转载请注明:
作者:IT江湖
我是IT江湖的创始人,也是现在主要的撰稿人!请大家多多支持!!!
如果您觉得这篇文章有用处,请支持作者!鼓励作者写出更好更多的文章!
您可能还会对这些文章感兴趣!& & 在MyBatis的select、insert、update、delete这些元素中都提到了parameterType这个属性。MyBatis现在可以使用的parameterType有基本数据类型和JAVA复杂数据类型& & 基本数据类型:包含int,String,Date等。基本数据类型作为传参,只能传入一个。通过#{参数名} 即可获取传入的值复杂数据类型:包含JAVA实体类、Map。通过#{属性名}或 #{map的KeyName}即可获取传入的值& & 基本数据类型参数示例:& & 根据班级ID查询教师列表& & xml文件& & [html]view plaincopy& &
select * from Teacher where c_id=#{id}& & [java]view plaincopy& & List tList = teacherMapper.selectTeacher(2); for (Teacher entityTemp : tList) {& & System.out.println(entityTemp.toString()); }JAVA实体类型参数示例:& & [html]view plaincopy& &
select * from Teacher where c_id=#{id}& & [java]view plaincopy& & java代码& & Teacher queryTeacher=new Teacher(); queryTeacher.setId(2);& & List tList = teacherMapper.selectTeacher(queryTeacher); for (Teacher entityTemp : tList) {& & System.out.println(entityTemp.toString()); }Map参数示例:& & [html]view plaincopy& &
select * from Teacher where c_id=#{id} and sex=#{sex}& & & & [java]view plaincopy& & java代码& & Map map=new HasMap(); map.put("id","2");& & map.put("sex","男"); List tList = teacherMapper.selectTeacher(map);& & for (Teacher entityTemp : tList) { System.out.println(entityTemp.toString()); }[java]view plaincopy& & public List selectTeacher(@Param(value="id") String id,@Param(value="sex") String sex);[html]view plaincopy& &
select * from Teacher where c_id=#{id} and sex=#{sex}& & [java]view plaincopy& & List tList = teacherMapper.selectTeacher("2","男"); for (Teacher entityTemp : tList) {& & System.out.println(entityTemp.toString());
声明:该文章系网友上传分享,此内容仅代表网友个人经验或观点,不代表本网站立场和观点;若未进行原创声明,则表明该文章系转载自互联网;若该文章内容涉嫌侵权,请及时向上学吧网站投诉>>
上一篇:下一篇:
相关经验教程
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益

我要回帖

更多关于 mybatis读取配置文件 的文章

 

随机推荐