一、 集成mybatis
- 在pom.xml中导入jar文件 (此处导入运行样例所用的所有的包)
<!-- mybatis框架包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.8</version>
</dependency>
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.35</version>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
</dependency>
<!-- log -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!--servlet所需要的jar-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
</dependency>
<!--JSON-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.58</version>
</dependency>
- 在resources下创建mybatis.xml主配置文件(在resource目录文件下右键->file->输入mybatis.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>
</configuration>
- 创建实体类User(首先要创建一个实体类的包com.cs.pojo)
- 在resources下创建database.properties 数据库连接配置文件
jdbc.driver=com.mysql.jdbc.Driver
#在和mysql传递数据的过程中,使用unicode编码格式,并且字符集设置为utf-8
jdbc.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull
jdbc.username=root
jdbc.password=admin
-
编写mybatis.xml主配置文件
<!--读取properties配置文件--> <properties resource="db.properties"></properties> <!--创建数据源 default默认加载哪个数据源--> <environments default="csDataSource"> <!--可以创建多个数据源 获取数据库连接--> <environment id="csDataSource"> <!--事务 JDBC方式加载事务--> <transactionManager type="JDBC"></transactionManager> <!--数据源 type属性、其有三种取值: POOLED:使用Mybatis自带的数据库连接池来管理数据库连接 UNPOOLED:不使用任何数据库连接池来管理数据库连接 JNDI:jndi形式使用数据库连接、主要用于项目正常使用的时候 --> <dataSource type="POOLED"> <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>
-
创建UserDao接口(在com.cs.dao里创建)
- 创建mapper文件(本人习惯于在resource下创建)
<?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">
<mapper namespace="com.cs.dao.UserDao">
</mapper>
此时的目录结构为
- 修改mybatis文件
<?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>
<properties resource="db.properties"></properties>
<settings>
<!--配置log4j 日志 一定要导入log的jar包-->
<setting name="logImpl" value="LOG4J"/>
<!-- 在mybatis主配置文件中关闭自动映射-->
<!-- <setting name="autoMappingBehavior" value="NONE"/>-->
</settings>
<typeAliases>
<package name="com.cs.pojo"/>
</typeAliases>
<environments default="cs">
<environment id="cs">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<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>
<!--扫描mapper文件-->
<mappers>
<mapper resource="mapper\UserMapper.xml"></mapper>
</mappers>
</configuration>
- 在UserMapper.xml文件编写查询语句
- 创建一个test测试类
- 回到UserDao快捷键Ctrl+alt+t添加测试类
- 填写测试类
@Test
public void findUserById() {
try {
InputStream is = Resources.getResourceAsStream("mybatis.xml");
//将is流转换为 sqlSessionFactory 工厂类
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
//打开数据库连接
/**
* true 自动提交 (默认)
* false 关闭自动提交
*/
SqlSession sqlSession = sqlSessionFactory.openSession(true);
//指定加载哪个mapper 实例化类
UserDao userDao = sqlSession.getMapper(UserDao.class);
User user = userDao.findUserById(1);
//打印
System.out.println(user.toString());
//释放资源
sqlSession.close();
} catch (Exception e) {
e.printStackTrace();
}
}
- 结果如下,和数据库对应