参考官网入门
https://mybatis.org/mybatis-3/zh/getting-started.html
1搭建环境
-
在数据库中建一个mybatis的user表,id,name,password.
CREATE DATABASE `mybatis`; USE `mybatis`; CREATE TABLE `user`( `id` INT(20) NOT NULL PRIMARY KEY, `name` VARCHAR(30) DEFAULT NULL, `password` VARCHAR(30) DEFAULT NUll )ENGINE=INNODB DEFAULT CHARSET=utf8; INSERT INTO `user` (`id`,`name`,`password`) VALUES (1,'jy','123123'), (2,'hh','128755'), (3,'rr','543564')
-
建maven项目mybatis
编写 pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!--父工程-->
<groupId>org.jy</groupId>
<artifactId>mybatis</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<!--导入依赖-->
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.5</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
</dependencies>
<!--在build中配置resources,来防止我们资源导出失败的问题,几乎每一个maven工程中都要配置-->
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
</project>
2创建一个maven模块mybatis01
-
MybatisUtils.java
package com.jy.utils; //可当模板 public class MybatisUtils { private static SqlSessionFactory sqlSessionFactory; static { try { //使用Mybatis的第一步,获取sqlSessionFactory对象 String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } } //既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。 // SqlSession 提供了在数据库执行 org.apache.ibatis.jdbc.SQL 命令所需的所有方法。 //你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句 public static SqlSession getSqlSession() { return sqlSessionFactory.openSession(); } }
-
mybatis-config.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> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8"/> <property name="username" value="root"/> <property name="password" value="061699"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/jy/dao/UserMapper.xml"></mapper> </mappers> </configuration>
3编写代码
-
实体类
public class User { private int id; private String name; private String password; //省略构造函数,set与get与toString方法
-
Dao接口
public interface UserDao { List<User> getUserList(); }
-
接口实现类UserMapper.xml(在mybatis中,就相当于用xml配置文件代替了UserDaoImpl)
<?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 具体的dao/mapper接口--> <mapper namespace="com.jy.dao.UserDao"> <!--resultType:具体的实体类--> <select id="getUserList" resultType="com.jy.pojo.User"> select * from mybatis.user </select> </mapper>
-
测试UserDaoTest
public class UserDaoTest { @Test public void test() { //第一步,获取sqlsession对象 SqlSession sqlSession = MybatisUtils.getSqlSession(); //用getMapper获取mapper UserDao mapper = sqlSession.getMapper(UserDao.class); List<User> userList = mapper.getUserList(); for (User user : userList) { System.out.println(user); } //最后一定不要忘记关闭sqlSession sqlSession.close(); } }
4.运行结果
5注意的问题(报的错误)
- 绑定失败(经常遇到的问题)配置文件没有注册
org.apache.ibatis.binding.BindingException: Type interface com.jy.dao.UserDao is not known to the MapperRegistry.
要在mybatis-config.xml中加入这个以下语句。
每一个Mapper.xml文件都需要在mybatis-config.xml核心配置文件中注册
<mappers>
<mapper resource="com/jy/dao/UserMapper.xml"></mapper>
</mappers>
2.Maven导出资源问题
<!--在build中配置resources,来防止我们资源导出失败的问题,几乎每一个maven工程中都要配置-->
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
3.除了以上的问题。。还是报错
把配置文件中的注释删掉就可以了,,很迷吧
4.错误汇总
- 配置文件没有注册
- 绑定接口错误
- 方法名不对
- 返回类型不对
- Maven导出资源问题