环境搭建

创建项目

导入jar包

mybatis包

数据库驱动包

其它依赖包

编写配置文件

DTD配置

<?xml version="1.0"  encoding="utf-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybait.org//DTD ccnfig 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- properties加载外部文件 -->
<properties resource="db.properties"></properties>
<!--配置setting标签-->
<settings>
<!--设置mybaits使用log4j日志支持 -->
<setting name="logImpl" value="LOG4J"/>
</settings>
<!--typeAliases标签,给类型起别名,缩短全限定路径 -->
<typeAliases>
<!-- 对指定的类定义别名 -->
<typeAlias type="com.bjsxt.pojo.Users" alias="u"/>
<!-- 不设置别名时,别名默认为类名,且不区分大小写 -->
<typeAlias type="com.bjsxt.pojo.Users"/>
<!-- 设置在包上,将把包下所有类自动设置别名,别名默认为类名 -->
<package name="com.bjsxt.pojo"/>
</typeAliases>
<!-- 用于指定使用哪个环境 -->
<environments default="dev">
<!-- 用于配置环境 -->
<environment id="dev">
<!-- 事务管理器,设置 mybatis 使用什么方式来管理事务
type: JDBC表示采用和JDBC一样的管理方式 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 数据库连接池,用于配置数据库连接池和连接参数
type: 用于设置mybatis是否采用连接池
POOLED 表示采用连接池技术-->
<dataSource type="POOLED"
# 引用properties外部配置文件中的参数
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!-- 扫描映射文件,与数据访问层的xml全路径及文件名相同,使用resource加载-->
<mappers>
<mapper resource="com/bjsxt/mapper/UserMapper.xml"/>
</mappers>
</configuration>

外部配置文件db.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/bjsxt?useUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=123456


定义POJO类

数据模型层

数据访问层(DAO层)

推荐使用mapper作为包名,这里只需要写映射配置文件 .xml

用于定义要执行的SQL语句,同时设定返回结果的类型

<?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 命名空间,一般使用全限定路径,包名+类名
mybatis 管理sql语句,通过 namespace+id 来定位
-->
<mapper namespace="com.bjsxt.mapper.UserMapper">
<!-- select 标签用于编写查询语句,
id: sql语句的唯一标识
resultType: 用于设定返回结果的类型(全限定路径),如果返回结果为集合,要写集合泛型的类型
-->
<select id="selAll" resultType="com.bjsxt.pojo.Users">
select * from users
</select>
</mapper>


执行查询

@Test
public void selectAll(){
try {
// 加载mybatis核心配置文件
InputStream is = Resources.getResourceAsStream("mybatis.xml");
// 构建SqlSessionFactory工厂对象
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);

SqlSession session = factory.openSession();
List<Users> list = session.selectList("com.bjsxt.mapper.UserMapper.selAll");

System.out.println(list);

session.close();
} catch (IOException e) {
e.printStackTrace();
}
}

查询结果为列表

mapper名+id

List<Users> list = session.selectList("com.bjsxt.mapper.UserMapper.selAll");

查询结果为单条记录

mapper名+id

Users user = session.selectOne("com.bjsxt.mapper.UserMapper.selAll");

查询结果为Map对象

mapper名+id, 指定列名作为map的键

Map<Object, Object> map = session.selectMap("com.bjsxt.mapper.UserMapper.selAll", "name");


LOG4J配置

log4j.rootLogger=INFO, Console, LOGFILE

# 打印日志到控制台
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%p]-%d{ISO8601} : %m%n
# 为指定方法设置日志级别
log4j.logger.com.bjsxt.mapper.UserMapper.selOne=DEBUG
# 为指定类设置日志级别
log4j.logger.com.bjsxt.mapper.UserMapper=DEBUG
# 为指定包设置日志级别
log4j.logger.com.bjsxt.mapper=DEBUG

# 打印日志到文件
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=log/log4j.log
log4j.appender.LOGFILE.Append=false
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=[%p]-%d{ISO8601} : %m%n