mybatis01环境及测试
在学习mybatis的过程中,需要一系列的前提条件,为了测试环境是否配置正确,所以自己用一个例子做了个小测试
资源下载
mybatis的jar包完整下载地址:
https://github.com/mybatis/mybatis-3/releases
配置
-
创建工程
-
加入jar包(这里的jar包除mybatis的jar包以外,还有lib文件下的依赖)
-
配置log4j,创建
log4j.properties
配置文件信息在pdf文件p87页# Global logging configuration # 听说开发环境要设置为DEBUG,生产环境设置为INFO或ERROR log4j.rootLogger=ERROR, stdout # MyBatis logging configuration... log4j.logger.org.mybatis.example.BlogMapper=TRACE # Console output... log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
-
创建
Configuration.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> <!-- 与spring整合后将废除 --> <environments default="development"> <environment id="development"> <!-- JDBC事务管理 --> <transactionManager type="JDBC"/> <!-- 数据库连接池 --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis?characterEncoding=utf8" /> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> </configuration>
-
创建sqlmapper文件,这里以
user.xml
为例<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- namespace: 命名空间 --> <mapper namespace="test"> <!-- 这里面开始写sql --> <!-- 以select语句进行举例: id: 标识符,也是mapperStatement的id parameterType: 输入类型 resultType: 返回类型,这里返回一个User对象 #{}: 占位符 #{id}: 其中的id是传递进去的值 --> <select id="selectUserByID" parameterType="int" resultType="com.model.User"> select * from user where id = #{id} </select> </mapper>
-
相应的,创建相应的model,这里以
User.java
为例package com.model; public class User { private int id; private String userName; private int userAge; private String userAddress; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public int getUserAge() { return userAge; } public void setUserAge(int userAge) { this.userAge = userAge; } public String getUserAddress() { return userAddress; } public void setUserAddress(String userAddress) { this.userAddress = userAddress; } @Override public String toString() { return "User [id=" + id + ", userName=" + userName + ", userAge=" + userAge + ", userAddress=" + userAddress + "]"; } }
-
在
Configuration.xml
中添加相关的配置,用于映射user.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> <!-- 与spring整合后将废除 --> <environments default="development"> <environment id="development"> <!-- JDBC事务管理 --> <transactionManager type="JDBC"/> <!-- 数据库连接池 --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis?characterEncoding=utf8" /> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> <!-- 添加sqlmapper映射 --> <mappers> <!-- 关于这里的resource,目录是从Configuration.xml位置起, 测试的时候错了很多次 --> <mapper resource="sqlmap/user.xml"/> </mappers> </configuration>
-
编写代码,这里新建
Test.java
package com.test; import java.io.IOException; import java.io.InputStream; 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 com.model.User; public class Test { public static void main(String[] args) throws IOException { findUserById(); } public static void findUserById() throws IOException { // mybatis 配置文件 String resource = "Configuration.xml"; // 得到配置文件流 InputStream inputStream = Resources.getResourceAsStream(resource); // 创建会话工厂,传入mybatis配置 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); // 通过工厂得到SqlSession SqlSession sqlSession = sqlSessionFactory.openSession(); // 通过SqlSession操作数据库 User user = sqlSession.selectOne("test.selectUserByID", 1); // 测试结果 System.out.println(user.toString()); // 释放资源 sqlSession.close(); } }
下面是我的项目结构:
测试结果截图: