工具:IDEA+Maven
数据库:postgresql 10
一,使用IDEA创建一个Maven-web项目
略
二,在pom.xml导入相关 jar 包
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.2</version>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.2</version>
</dependency>
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="OFF">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%m%n" />
</Console>
</Appenders>
<Loggers>
*<logger name="mapper" level="DEBUG"/>*
<Root level="error">
<AppenderRef ref="Console"/>
</Root>
<Logger name="mapper" level="TRACE" additivity="false">
<AppenderRef ref="Console"/>
</Logger>
</Loggers>
</Configuration>
ps:此文件包含了全局日志配置,MyBatis的日志配置和控制台输出,其中Mybatis的日志配置用于将包下所有类的日志级别设置为 DEBUG.
package top.skyzc.pojo;
public class Member {
private Integer id;
private String name;
private String sex;
@Override
public String toString() {
return "Member{" +
"id=" + id +
", name='" + name + '\'' +
", sex='" + sex + '\'' +
'}';
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mubatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="top">
<select id="findMemberById" parameterType="Integer" resultType="top.skyzc.pojo.Member">
select * from skyzcteam where id = #{id}
</select>
</mapper>
<?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="postgresql">
<environment id="postgresql">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="org.postgresql.Driver"/>
<property name="url" value="jdbc:postgresql://localhost:5432/skyzccool"/>
<property name="username" value="postgres"/>
<property name="password" value="youzc"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/MemberMapper.xml"/>
</mappers>
</configuration>
八,测试,创建 top.skyzc.test 包,并创建测试类 MybatisTest
package top.skyzc.test
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 top.skyzc.pojo.Member
import java.io.InputStream
public class MybatisTest {
@Test
public void findMemberByIdTest() throws Exception{
//1.读取配置文件
String resource = "mybatis-config.xml"
InputStream inputStream = Resources.getResourceAsStream(resource)
//2.根据配置文件构建 SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream)
//3.通过 SqlSessionFactory 创建 SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession()
//4.SqlSession 执行映射文件中定义的 SQL ,并返回映射结果
Member member = sqlSession.selectOne("findMemberById",1)
//打印输出结果
System.out.println(member.toString())
//5.关闭 SqlSession
sqlSession.close()
}
}
九,运行测试方法,控制台输出
ps:此处虽然读取成功了,表示 MyBatis也运行成功,但是发现此处报了一个错误:
WARNING: An illegal reflective access operation has occurred
警告:发生非法反射访问操作
百度后发现貌似是 JDK9以上会出现的问题。
===
更新:上面的 logj并没有成功,所以上面有更改,将log4j改为了log4j2,最后结果: