簡體   English   中英

在入門指南中找不到一些要導入的MyBatis類

[英]Can't find some MyBatis classes to import in getting started guide

我是一個初學者,以前從未使用過MyBatis,因此決定從Github官方網站上的MyBatis入門指南開始進行學習: http : //mybatis.github.io/mybatis-3/getting-started.html

但是,我很早就遇到了麻煩,我希望有人可以幫助我,這很簡單。 具體來說,我一直試圖在標題“沒有XML的情況下構建SqlSessionFactory”下進行示例。 示例如下:

如果您希望直接從Java(而不是XML)構建配置,或者創建自己的配置生成器,則MyBatis提供了一個完整的Configuration類,該類提供與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開發人員的經驗,我非常感謝您的幫助!

我以為我要用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教程中找到有關MyBatis的更多信息。

好吧,我不確定是否應該刪除此問題,但基本上maba的評論中的答案似乎是正確的。 我誤解了文檔,意味着BlogMapper是庫中提供的實現示例,但事實並非如此,它的實現由讀者自己決定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM