Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用MyBatis连接数据库而不使用xml文件_Java_Database Connection_Mybatis - Fatal编程技术网

Java 使用MyBatis连接数据库而不使用xml文件

Java 使用MyBatis连接数据库而不使用xml文件,java,database-connection,mybatis,Java,Database Connection,Mybatis,我正在尝试使用MyBatis将一个小型java应用程序与数据库连接起来 XML文件: <?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> &l

我正在尝试使用MyBatis将一个小型java应用程序与数据库连接起来

XML文件:

<?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>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="oracle.jdbc.driver.OracleDriver"/>
                <property name="url" value="jdbc:oracle:thin:@xxxx:xxxx:xxxx"/>
                <property name="username" value="xxxxx"/>
                <property name="password" value="xxxxx"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="xml/Mapper.xml"/>
    </mappers>
</configuration>

我想连接到数据库而不使用xml文件。任何帮助都将不胜感激。

您是否查看了MyBatis 3用户指南?有一个叫做“Building SqlSessionFactory”的部分 没有XML”。此外,也不需要使用基于XML的映射,您可以使用基于注释的语句映射,完全避免XML配置

这对我很有用:

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;


String user = "xxxxx";
String password = "xxxxx";
String databasenameURL = "jdbc:oracle:thin:@xxxx:xxxx:xxxx";
String dbDriver = "oracle.jdbc.driver.OracleDriver";


DataSource dataSource = new org.apache.ibatis.datasource.pooled.PooledDataSource(
        dbDriver, databasenameURL, user, password);
TransactionFactory transactionFactory = new JdbcTransactionFactory();
Environment environment = new Environment("development",
        transactionFactory, dataSource);
Configuration configuration = new Configuration(environment);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
        .build(configuration);

也许已经晚了,但对未来的读者来说

您可以将xml解析为字符串,并在以后修改所需的任何值:

这对我很有用:

    import org.apache.commons.io.IOUtils;
    import org.apache.commons.io.input.CharSequenceReader;
    import org.apache.commons.lang3.StringUtils;
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    import org.apache.log4j.Logger;

    import java.io.IOException;
    import java.io.Reader;

    public class MySqlSessionFactory
    {
        private static Logger log = Logger.getLogger(MySqlSessionFactory.class);
        private static SqlSessionFactory sessionFactory;

        public static SqlSessionFactory getSqlSessionFactory()
        {
            return sessionFactory;
        }

        /**
         * Initialize SqlSessionFactory instance, to be used later in all the project
         *
         * @return boolean if sqlSessionFactory is build
         */
        public static boolean initializeMySqlSessionFactory() throws IOException
        {
            log.trace("Enter method initializeMySqlSessionFactory.");
            String resource = "mybatis-config.xml";
            boolean result;
            Reader reader = null;
            Reader parsedReader = null;
            try
            {
                reader = Resources.getResourceAsReader(resource);
                String parsedXMLConfig = IOUtils.toString(reader);

                parsedXMLConfig = StringUtils.replace(parsedXMLConfig, "${jdbcUrl}", "databaseURL");
                parsedXMLConfig = StringUtils.replace(parsedXMLConfig, "${username}", "databaseUser");
                parsedXMLConfig = StringUtils.replace(parsedXMLConfig, "${password}", "databasePassword");
                parsedReader = new CharSequenceReader(parsedXMLConfig);

                sessionFactory = new SqlSessionFactoryBuilder().build(parsedReader);
                result = true;
            }
            catch(IOException e)
            {
                result = false;
                log.error("Error calling initializeMySqlSessionFactory.", e);
                throw new IOException(e);
            }
            finally
            {

                if(reader != null )
                {
                    reader.close();
                }
                if(parsedReader != null )
                {
                    parsedReader.close();
                }

            }
            log.trace("Exit method initializeMySqlSessionFactory. Method result: " + result);
            return result;
        }

    }
同样通过这种方式,您可以更改任何您想要的指定字段。。。并注意在xml文件中放置相同的占位符(${jdbcUrl},${username},${password})

    import org.apache.commons.io.IOUtils;
    import org.apache.commons.io.input.CharSequenceReader;
    import org.apache.commons.lang3.StringUtils;
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    import org.apache.log4j.Logger;

    import java.io.IOException;
    import java.io.Reader;

    public class MySqlSessionFactory
    {
        private static Logger log = Logger.getLogger(MySqlSessionFactory.class);
        private static SqlSessionFactory sessionFactory;

        public static SqlSessionFactory getSqlSessionFactory()
        {
            return sessionFactory;
        }

        /**
         * Initialize SqlSessionFactory instance, to be used later in all the project
         *
         * @return boolean if sqlSessionFactory is build
         */
        public static boolean initializeMySqlSessionFactory() throws IOException
        {
            log.trace("Enter method initializeMySqlSessionFactory.");
            String resource = "mybatis-config.xml";
            boolean result;
            Reader reader = null;
            Reader parsedReader = null;
            try
            {
                reader = Resources.getResourceAsReader(resource);
                String parsedXMLConfig = IOUtils.toString(reader);

                parsedXMLConfig = StringUtils.replace(parsedXMLConfig, "${jdbcUrl}", "databaseURL");
                parsedXMLConfig = StringUtils.replace(parsedXMLConfig, "${username}", "databaseUser");
                parsedXMLConfig = StringUtils.replace(parsedXMLConfig, "${password}", "databasePassword");
                parsedReader = new CharSequenceReader(parsedXMLConfig);

                sessionFactory = new SqlSessionFactoryBuilder().build(parsedReader);
                result = true;
            }
            catch(IOException e)
            {
                result = false;
                log.error("Error calling initializeMySqlSessionFactory.", e);
                throw new IOException(e);
            }
            finally
            {

                if(reader != null )
                {
                    reader.close();
                }
                if(parsedReader != null )
                {
                    parsedReader.close();
                }

            }
            log.trace("Exit method initializeMySqlSessionFactory. Method result: " + result);
            return result;
        }

    }