1.什么是MyBatis
MyBatis是一个开源的数据持久层框架,它内部封装了通过JDBC访问数据库的操作,支持普通的SQL查询,存储过程和高级映射,就消除了所有的JDBC代码和参数的手工设置以及结果集的检索。
2.连接数据库之前的准备
若使用MyBatis连接数据库,必先进行MyBatis环境搭建,如部署jar文件,配置MyBatis的核心配置文件configuration.xml等,此处笔者不再赘述,读者自行查询学习。另外,此连接方法是写在maven之下的连接方法,如果没有给编程软件配置maven,则需要导入一系列jar包:如Junit4,log4j,mybatis等等。
3.使用MyBatis连接数据库
(1)首先,建立一个maven项目
(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 数据源,sPOOLED是mybatis自带的数据源--> <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.结语
此文是笔者初学乍练,准备不足之作,如有错误,欢迎向笔者提出,以避免笔者误导其他读者。