工具:IDEA+Maven
数据库:postgresql 10
一,使用IDEA创建一个Maven-web项目
略
二,在pom.xml导入相关 jar 包
<dependency>
<groupId>org.apache.logging.log4jgroupId>
<artifactId>log4j-coreartifactId>
<version>2.3version>
dependency>
<dependency>
<groupId>org.apache.logging.log4jgroupId>
<artifactId>log4j-apiartifactId>
<version>2.3version>
dependency>
<dependency>
<groupId>log4jgroupId>
<artifactId>log4jartifactId>
<version>1.2.17version>
dependency>
<dependency>
<groupId>org.mybatisgroupId>
<artifactId>mybatisartifactId>
<version>3.4.2version>
dependency>
<dependency>
<groupId>org.postgresqlgroupId>
<artifactId>postgresqlartifactId>
<version>42.2.2version>
dependency>
ps:由于Mybatis默认使用 log4j 输出日志信息,所以如果要查看控制台的输出 SQL 语句,那么就需要在 classpath 路径下配置其日志文件:
三,在src下创建 java 和 resource 目录,并 Mark Directory as…
完成之后项目结构为:
四,(配置log4j2)在resource目录下创建 log4j2.xml,并编辑
<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.
五,(创建 pojo)在java目录下创建一个 top.skyzc.pojo包,在该包下创建持久化类 Member,声明 id,name,sex 属性,并创建对应的 getter/setter,toString方法.
package top.skyzc.pojo;
/*
* 创建一个持久化类 成员类 Member
* 实际上 Member 就是一个POJO
* MyBatis 就是采用 POJO (普通java对象)作为持久化来完成对数据库操作的
* */
public class Member {
private Integer id; //主键 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;
}
}
六,创建 Mapper映射文件
在resource目录下创建一个文件夹 mapper,并在其下创建一个 MemberMapper.xml。
ps:此文件模板在 MyBatis 使用手册 第二小节 Geting started 下的2.1.5小节,Exploring Mapped SQL Startments中可以找到。
<mapper namespace="top">
<select id="findMemberById" parameterType="Integer" resultType="top.skyzc.pojo.Member">
select * from skyzcteam where id = #{id}
select>
mapper>
七,创建MyBatis 核心配置文件(resource目录下) mybatis-config.xml
ps:模板文件在MyBatis使用手册 第 2.1.2小节
<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,最后结果: