目录
前言
1、项目目录结构总览
2、准备工作
2.1 新建测试项目,下载jar包
2.2 创建数据库表(本文使用的mysq数据库)
3、环境搭建
3.1 根据目录结构创建对应文件,导包
3.2 配置资源文件
3.3 department包中代码编写(用于sqlSession调用sql)
3.4 user包中代码编写(用于Mapper接口调用sql)
4、功能测试
4.1 通过sqlSession调用sql
4.2 通过Mapper接口调用sql
mybatis 众所周知,很优秀的一款持久层框架,具体的概念就不说了,本文就简单的描述下mybatis开发环境的搭建吧。由于mybatis可以通过sqlSession调用sql(延续ibatis)也可以通过Mapper接口调用sql,所以下面从两部分测试下。
项目需要2类包,一是mysql驱动包,一个是mybatis的jar和日志包,日志包在mybatis下的lib目录里。
mysql驱动包下载地址:https://dev.mysql.com/downloads/connector/j/
mybatis的jar包和日志包下载地址:https://github.com/mybatis/mybatis-3/releases
本文需要创建fw_department和fw_user表,创建表的脚本如下(数据自己加):
CREATE TABLE `fw_department` (
`depid` varchar(32) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT '部门ID',
`parentdepid` varchar(32) COLLATE utf8_bin DEFAULT NULL COMMENT '父部门ID',
`depno` varchar(32) COLLATE utf8_bin NOT NULL COMMENT '部门编号',
`depname` varchar(64) COLLATE utf8_bin NOT NULL COMMENT '部门名称',
PRIMARY KEY (`depid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
CREATE TABLE `fw_user` (
`userid` varchar(32) COLLATE utf8_bin NOT NULL COMMENT '人员ID',
`userno` varchar(32) COLLATE utf8_bin DEFAULT NULL COMMENT '人员编号',
`username` varchar(32) COLLATE utf8_bin DEFAULT NULL COMMENT '人员姓名',
PRIMARY KEY (`userid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
按照目录结构创建文件,将下载的jar包导入到项目中WEB-INF\lib目录下,并选中所有jar包并点击右键--》Build Path--》Add to Build Path。
资源文件包括三部分,分别为jdbc.properties、mybatis-config.xml和log4j.properties
3.2.1 配置jdbc.properties文件内容(用于mybatis全局配置文件),内容如下(根据自己的数据库名称、用户名和密码配置):
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&useSSL=true
jdbc.username=root
jdbc.password=123456
3.2.2 配置mybatis-config.xml全局配置文件,内容如下:
3.2.3 配置log4j.properties,此文件可根据自己需求配置,以下是简单配置:
# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# 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
3.3.1 完善部门DTO对象
内容是基本属性、get方法、set方法和重写的toString()方法(用于后面测试)。
3.3.2 完善DepartmentMapper.xml
内容是简单的查询sql,需要注意的是namespace可以随意设置,只要唯一就行,没有通过mapper接口调用sql时设置的那么严格。如下:
3.4.1 创建用户DTO对象(略)
3.4.2 创建UserMapper接口和UserMapper.xml
注意:
1、接口中的方法名和UserMapper.xml中select配置的ID必须一致;
2、接口必须和UserMapper.xml在同一目录下(如果mapper文件是通过class配置的,则此条必须注意,否则可以忽略);
3、UserMapper.xml中namespace设置的为接口的全路径。
UserMapper.xml内容如下:
至此必要的代码已经写完了,测试代码如下:
public static void main(String[] args) throws Exception {
String resource = "resources/mybatis-config.xml";
InputStream stream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(stream);
SqlSession sqlSession = sqlSessionFactory.openSession();
//使用sqlSession执行sql
testSqlSession(sqlSession);
//使用mapper接口执行sql
testMapper(sqlSession);
sqlSession.close();
}
public static void testSqlSession(SqlSession sqlSession) {
DepartmentDTO depDTO = sqlSession.selectOne("department.findDepartmentByID", "001001");
System.out.println(depDTO.toString());
}
public static void testMapper(SqlSession sqlSession) {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
UserDTO userDTO = userMapper.findUserByID("111");
System.out.println(userDTO.toString());
}
部分测试结果如下:
DEBUG [main] - Opening JDBC Connection
DEBUG [main] - Created connection 1271041075.
DEBUG [main] - Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@4bc28c33]
DEBUG [main] - ==> Preparing: select depid, parentdepid, depno, depname from fw_department where depid = ?
DEBUG [main] - ==> Parameters: 001001(String)
DEBUG [main] - <== Total: 1
[depID=001001,parentDepID=0,depNO=101,depName=财务部]
DEBUG [main] - ==> Preparing: select userid, userno, username from fw_user where userid = ?
DEBUG [main] - ==> Parameters: 111(String)
DEBUG [main] - <== Total: 1
[userID=111,userNO=19092601,userName=张三]