我是初学者,并且以前没有使用过MyBatis,并决定开始使用官方Github网站上的MyBatis入门指南:http://mybatis.github.io/mybatis-3/getting-started.html
然而,我在早期遇到了一些麻烦,我希望有人可以帮助我这么简单。具体来说,我试图在标题"构建没有XML"的SqlSessionFactory的情况下做例子。示例如下:
如果您更喜欢直接从Java构建配置 MyBatis提供了一个,而不是XML,或者创建自己的配置构建器 完整的配置类,提供所有相同的功能 配置选项作为XML文件。
DataSource dataSource = BlogDataSourceFactory.getBlogDataSource();
TransactionFactory transactionFactory = new JdbcTransactionFactory();
Environment environment = new Environment("development", transactionFactory, dataSource);
Configuration configuration = new Configuration(environment);
configuration.addMapper(BlogMapper.class);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
然后我查看了JavaDoc中最新的mybatis-3.2.5版本,但无法找到我正在寻找的一些类,比如BlogDataSourceFactory和BlogMapper。此外,当我希望它在org.mybatis下时,一切都在org.apache.ibatis下(显然ibatis是由Apache维护的旧项目名称)。我还检查了预发布的mybatis-3.2.6-SNAPSHOT,但是它有相同的包结构,我仍然找不到那些丢失的类。
很抱歉,如果这是一个非常愚蠢的问题/我错过了一些显而易见的事情,我也没有经验丰富的Java开发人员,我感谢您的帮助!
答案 0 :(得分:2)
我以为我会找到一些BlogDataSourceFactory.getBlogDataSource()
的示例代码,但没有。但我设法创建了自己的实现:
package com.zetcode.jconfig;
import org.apache.ibatis.annotations.Select;
public interface MyMapper {
@Select("SELECT COUNT(*) FROM MyBooks")
public int getNumberOfBooks();
}
这是一个MyMapper
类,它有一个SELECT语句。
package com.zetcode.jconfig;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.ibatis.datasource.DataSourceFactory;
import org.apache.ibatis.datasource.pooled.PooledDataSource;
public class MyDataSourceFactory implements DataSourceFactory {
private Properties prop;
@Override
public DataSource getDataSource() {
PooledDataSource ds = new PooledDataSource();
ds.setDriver(prop.getProperty("driver"));
ds.setUrl(prop.getProperty("url"));
ds.setUsername(prop.getProperty("user"));
ds.setPassword(prop.getProperty("password"));
return ds;
}
@Override
public void setProperties(Properties prprts) {
prop = prprts;
}
}
MyDataSourceFactory
创建PooledDataSource
。它实现了MyBatis'
DataSourceFactory
界面。
package com.zetcode.client;
import com.zetcode.jconfig.MyDataSourceFactory;
import com.zetcode.jconfig.MyMapper;
import java.io.IOException;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.ibatis.mapping.Environment;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.ibatis.transaction.TransactionFactory;
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
public class MyBatisJavaConfClient {
private static SqlSessionFactory sesFact = null;
public static void main(String[] args) throws IOException {
Properties prop = new Properties();
prop.setProperty("driver", "com.mysql.jdbc.Driver");
prop.setProperty("url", "jdbc:mysql://localhost:3306/testdb");
prop.setProperty("user", "testuser");
prop.setProperty("password", "test623");
MyDataSourceFactory mdsf = new MyDataSourceFactory();
mdsf.setProperties(prop);
DataSource ds = mdsf.getDataSource();
TransactionFactory trFact = new JdbcTransactionFactory();
Environment environment = new Environment("development", trFact, ds);
Configuration config = new Configuration(environment);
config.addMapper(MyMapper.class);
sesFact = new SqlSessionFactoryBuilder().build(config);
try (SqlSession session = sesFact.openSession()) {
int numOfBooks = session.selectOne("getNumberOfBooks");
System.out.format("There are %d books", numOfBooks);
}
}
}
MyBatisJavaConfClient
包含替换XML配置并构建执行SQL代码的会话的代码。
您可以在我的MyBatis tutorial中找到有关MyBatis的更多信息。
答案 1 :(得分:1)
好吧,我不确定是否应该删除这个问题,但基本上来自评论中maba的回答似乎是正确的。我误解了文档意味着BlogMapper是库中提供的实现示例,但似乎并非如此,并且它的实现由读者完成。