1.打开idea创建一个maven项目在pom.xml导入依赖包;
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
</dependencies>
2.在resources创建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="数据库名称"/>
<property name="password" value="数据库密码"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="Usermapper.xml"/>
</mappers>
</configuration>
3.创建工具类
例如在java文件夹内创建包com.feng.dao文件夹,在同级目录feng下创建一个utils文件夹,在这个文件夹内创建一个工具类MybatisUlis类写入
//提高作用域
private static SqlSessionFactory sqlSessionFactory;
static {
try {
//获取资源配置文件
String resource = "mybatis-configer.xml";
//解析资源文件
InputStream inputStream = Resources.getResourceAsStream(resource);
//创建工厂
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
//获取工厂对象sqlsession
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession();
}
工具类格式(取自官方文档):
String resource = “org/mybatis/example/mybatis-config.xml”;
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
4.创建实体类user,属性对应数据库表中的数据
在com.feng.userdata 创建一个类
private int id;
private String name;
private String passwd;
、
public user() {
}
public user(int id, String name, String passwd) {
this.id = id;
this.name = name;
this.passwd = passwd;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPasswd() {
return passwd;
}
public void setPasswd(String passwd) {
this.passwd = passwd;
}
@Override
public String toString() {
return "user{" +
"id=" + id +
", name='" + name + '\'' +
", passwd='" + passwd + '\'' +
'}';
}
5.在dao文件夹内写一个接口UserDao
public interface UserDao {
//声明一个存储着user类型的列表
List<user> getUserlist();
}
还在里面写了UserDao接口的xml映射文件(这个xml文件不一定写在dao文件夹内),此时将两者绑定在一起,通俗点理解就是Usermapper.xml是Userdao的实现类,所以当后面我们要获取sql语句的时候我们可以通过Userdao接口的对象来获取,也就是Userdao.class;
Usermapper.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">
<mapper namespace="com.feng.dao.UserDao">
//返回值类型必须使用全限定类名!!!
//id要与接口内方法名一样,类似jdbc重写方法
<select id="getUserlist" resultType="com.pojo.user">
//数据库.表名
select * from mybatis.user;
</select>
</mapper>
6.测试
在test包内的java文件夹内创建一个和UserDao接口一样的路径,在创建一个测试类UserTest
@Test
public void test(){
//通过我们写的工具类来获取产品sqlsession
SqlSession sqlSession = MybatisUtils.getSqlSession();
//获取产品里的sql语句并且执行
UserDao userDao = sqlSession.getMapper(UserDao.class);
List<user> userList = userDao.getUserlist();
//遍历用户列表
for (user users: userList) {
System.out.println(users);
}
//关闭产品
sqlSession.close();
}
出现过的问题小结:
1.实现类xml文档的id不与接口内方法相同造成
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
2.出现Usermapper xml文档未找到(使用class注入用".“使用resource路径用”/")
主配置文件需要注册
<mappers>
//此时的Usermapper.xml文档也放在resources文件夹下,所以使用相对路径
<mapper resource="Usermapper.xml"/>
</mappers>
3.IDEA连接数据库时候出现问题
需要更改时区成GMT
4.连接数据库后未出现表格
需要点击Schemas导入所需要的数据库表格