MyBatis连接数据库

时间:2024-03-15 12:40:15

1.什么是MyBatis

    MyBatis是一个开源的数据持久层框架,它内部封装了通过JDBC访问数据库的操作,支持普通的SQL查询,存储过程和高级映射,就消除了所有的JDBC代码和参数的手工设置以及结果集的检索。

2.连接数据库之前的准备

    若使用MyBatis连接数据库,必先进行MyBatis环境搭建,如部署jar文件,配置MyBatis的核心配置文件configuration.xml等,此处笔者不再赘述,读者自行查询学习。另外,此连接方法是写在maven之下的连接方法,如果没有给编程软件配置maven,则需要导入一系列jar包:如Junit4,log4j,mybatis等等。

3.使用MyBatis连接数据库

    (1)首先,建立一个maven项目

MyBatis连接数据库

(2)配置pom.xml文件

<dependencies>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.12</version>
    </dependency>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.2.2</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.21</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.10</version>
    </dependency>
</dependencies>
<build>
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.xml</include>
            </includes>
        </resource>
    </resources>
</build>

(3)在resources包下创建database.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/project
jdbc.userName=root
jdbc.password=root
jdbc.url下的project为数据库database的名称,jdbc.userName下的root是连接数据库的用户名,jdbc.password下的root是连接数据库的密码,此内容需要根据用户设置自行修改。


(4)在resources包下创建log4j.properties文件

log4j.rootLogger=DEBUG,CONSOLE,file
log4j.logger.cn.smbms.dao=debug
log4j.logger.com.ibatis=debug
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug
log4j.logger.java.sql.Connection=debug
log4j.logger.java.sql.Statement=debug
log4j.logger.java.sql.PreparedStatement=debug
log4j.logger.java.sql.ResultSet=debug
log4j.logger.org.tuckey.web.filters.urlrewrite.UrlRewriteFilter=debug
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=error
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern= [%p] %d %c - %m%n
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.DatePattern=yyyy-MM-dd
log4j.appender.file.File=log.log
log4j.appender.file.Append=true
log4j.appender.file.Threshold=error
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-M-d HH:mm:ss}%x[%5p](%F:%L) %m%n
log4j.logger.com.opensymphony.xwork2=error
 

(5)在resources包下创建并配置核心文件maybatis-config.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>
  <!-- 引入properties文件-->
    <properties resource="database.properties"></properties>

<!--settings    修改 MyBatis 在运行时的行为方式-->
    <settings>
        <setting name="logImpl" value="LOG4J"/>
    </settings>

<!--environments   环境-->
    <environments default="development">

<!--environment   环境变量-->
        <environment id="development">
            <!--transactionManager  事务管理器 ,采用JDBC事务-->
            <transactionManager type="JDBC"></transactionManager>
            <!--dataSource   数据源,sPOOLEDmybatis自带的数据源-->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"></property>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.user}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>
    <!--mappers 映射器,mapper文件加入到配置文件中-->
    <mappers>
        <mapper resource="com/bdqn/dao/TUserMapper.xml"/>
    </mappers>
</configuration>

(6)在src.main.java.cn.bdqn.dao包下创建TUserMapper.xml

注意:要将其引入的mybatis-configuration.xml文件中

<?xml version="1.0"encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTDMapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bdqn.dao.TUserMapper">
    <select id="queryCount"resultType="int">
        SELECT COUNT(1) FROM t_user
    </select>
</mapper>

(7)创建测试类,测试是否连接数据库

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
public class UserTest {

    @Test
    public void testQueryCount() {
        String source="mybatis-config.xml";
        int count=0;
        SqlSession sqlSession=null;

        try {
            //1 获取mybatis-config.xml的输入流
            InputStream is = Resources.getResourceAsStream(source);
            //2 创建SqlSessionFactory对象,完成对配置文件的读取
            SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(is);
            //3 创建sqlSession
            sqlSession=sqlSessionFactory.openSession();
            //4 调用mapper文件来对数据进行操作,必须先把mapper文件引入到mybatis-config.xml
            count=sqlSession.selectOne("com.bdqn.dao.TUserMapper.queryCount");

        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            sqlSession.close();
        }
        System.out.println(count);
    }
}

(8)测试结果

    如果数据库之中包含数据,则System.out.println(count);会打印数据数量,则证明数据库连接无疑问。

4.结语

    此文是笔者初学乍练,准备不足之作,如有错误,欢迎向笔者提出,以避免笔者误导其他读者。