eclipse利用maven创建一个mybatis项目
一、新建一个maven项目
eclipse->file->new->other
二、导入依赖
在maven的pom.xml中的dependencies标签中添加如下代码
<!-- mybatis框架需要依赖的jar包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!-- 数据库驱动需要用到的jar包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
</dependency>
修改保存后eclipse会自动加载这些需要的jar包,若是eclipse没有自动加载可以通过右击maven项目-》maven-》Update Project,选择需要手动更新的项目来手动加载需要的jar包
三、创建mybatis-config.xml配置文件
-
若是创建maven时选中了quick-start则创建的maven项目中会没有resource文件夹,可以通过:右击项目-》new-》Source Folder来创建resource文件夹,该文件夹用来放置我们项目中所有用到的配置文件。
-
在resource文件夹下新建一个mybatis-config.xml文件
-
在mybatis-config.xml文件中输入如下xm代码,其中**${}**内的内容根据自己的情况来填写
<?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> <!-- 配置mybatis的运行环境 --> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="${driver}" /> <property name="url" value="${url}" /> <property name="username" value="${username}" /> <property name="password" value="${password}" /> </dataSource> </environment> </environments> <!--配置映射配置文件,用来告诉mybatis到哪里去找定义的SQL映射语句 --> <mappers> <mapper resource="${映射文件的地址}" /> </mappers> </configuration>
ps.
-
在environments中我们可以配置多个环境。若在创建SqlSessionFactory时没有指定environment,mybatis会通过environments的default属性来选择使用的默认环境
-
如果使用的是mysql8.0以上的数据库,则需要在它的uri后面加上如下代码,否则会报异常
?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
-
配置映射器的方法共有四种,其中三种分别为
<!-- 使用相对于类路径的资源引用 --> <mappers> <mapper resource="com/lxx/mybatistudy/dao/UserMapper.xml"/> </mappers>
<!-- 使用映射器接口实现类的完全限定类名 --> <mappers> <mapper class="com.lxx.mybatistudy.dao.UserMapper"/> </mappers>
<!-- 将包内的映射器接口实现全部注册为映射器 --> <mappers> <package name="com.lxx.mybatistudy.dao"/> </mappers>
四、创建mapper映射文件
-
创建一个名为mybatis的数据库,并将下面的代码保存进sql文件中,再导入该sql文件进该数据库,该数据库里面有一个user表,表里有3条数据
-- MySQL dump 10.13 Distrib 8.0.16, for Win64 (x86_64) -- -- Host: localhost Database: mybatis -- ------------------------------------------------------ -- Server version 8.0.16 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; SET NAMES utf8 ; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; -- -- Table structure for table `user` -- DROP TABLE IF EXISTS `user`; /*!40101 SET @saved_cs_client = @@character_set_client */; SET character_set_client = utf8mb4 ; CREATE TABLE `user` ( `iduser` int(11) NOT NULL, `username` varchar(45) DEFAULT NULL, `password` varchar(45) DEFAULT NULL, PRIMARY KEY (`iduser`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Dumping data for table `user` -- LOCK TABLES `user` WRITE; /*!40000 ALTER TABLE `user` DISABLE KEYS */; INSERT INTO `user` VALUES (1,'张三','123'),(2,'李四','123'),(3,'王五','123'); /*!40000 ALTER TABLE `user` ENABLE KEYS */; UNLOCK TABLES; -- -- Dumping events for database 'mybatis' -- -- -- Dumping routines for database 'mybatis' -- /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; -- Dump completed on 2019-08-18 19:10:11
-
创建一个DAO层的接口,并在该接口中写一个DAO层的方法,比如
public interface UserMapper { /** * 统计所有用户的数目 * @return 所有用户的数目 */ Integer countUser(); }
-
在相同的位置创建一个同名的xml文件,注意必须要在相同的位置创建而且名字也要相同,不然mybatis会报异常,xml文件的内容如下:
<?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属性是用来配置命名空间 resultType是sql映射文件中定义返回值类型 --> <mapper namespace="com.lxx.mybatistudy.dao.StudentDao"> <select id="countUser" resultType="java.lang.Integer"> SELECT count(*) FROM mybatis.user </select> </mapper>
五、测试
public class Client {
public static void main(String[] args) {
String resource = "mybatis-config.xml";//mybatis配置文件的地址
InputStream inputStream;
try {
inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
.build(inputStream);
SqlSession session = sqlSessionFactory.openSession();
UserMapper mapper = session.getMapper(UserMapper.class);
int userNum = mapper.countUser();
System.out.println(userNum);
} catch (IOException e) {
e.printStackTrace();
}
}
}
ps.这个代码仅仅是为了测试mybatis是否配置成功,具体使用mybatis时请遵守开发规范,在finally中该关闭的流请记得关闭。