Mybatis学习总结第一篇
一、mybatis的环境搭建
- 第一步:创建maven工程并在pom.xml中导入相关依赖
<!--打包方式为jar-->
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.4</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.12</version>
</dependency>
</dependencies>
- 第二步:新建一个数据库,比如数据库名为”eesy_mybatis",表为“user”
-
第三步:创建实体类和dao的接口
- 创建实体类,包括id、username、birthday、sex、address字段,与数据库相对应,并且生成它们的Getter()和Setter()方法以及toString()方法,方法代码此处自己添加生成,不复制过来了
package com.dmj.domain;
import java.io.Serializable;
import java.util.Date;
//创建实体类
public class User implements Serializable {
private Integer id;
private String username;
private Date birthday;
private String sex;
private String address;
//此处添加Getter()和Setter()方法以及toString()方法
}
package com.dmj.dao;
import com.dmj.domain.User;
import java.util.List;
/**
* 用户持久层接口
*/
public interface IUserDao {
/**
* 查询所有操作,提供一个方法,返回类型为List类型都是User,叫做findAll
*/
List<User> findAll();
}
- 第四步:创建Mybatis的主配置文件SqlMapConifg. 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">
<!--mybatis的主配置文件-->
<configuration>
<!--配置环境-->
<environments default="mysql">
<!--配置mysql的环境-->
<environment id="mysql">
<!--配置事务的类型-->
<transactionManager type="JDBC"></transactionManager>
<!--配置数据源(连接池)-->
<dataSource type="POOLED">
<!--配置连接数据库的4个基本信息-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/eesy_mybatis"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!--指定映射配置文件的位置,映射配置文件指的是每一个dao独立的配置文件-->
<mappers>
<mapper resource="com/dmj/dao/IUserDao.xml"/>
</mappers>
</configuration>
- 第五步:创建映射配置文件IUserDao. 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.dmj.dao.IUserDao">
<!--查询所有,已经添加返回类型-->
<select id="findAll" resultType="com.dmj.domain.User">
select * from user;
</select>
</mapper>
二、环境搭建的注意事项
-
第一个:创建IUserDao. xml和IUserDao. java时名称是为了和我们之前的知识保持一致。在Mybatis中它把持久层的操作接口名称和映射文件也叫做: Mapper所以: IUserDao 和IUserMapper是一 样的
-
第二个:在idea中创建目录的时候,它和包是不一样的。包在创建时:com. itheima. dao它是三级结构。目录在创建时:com. itheima. dao是一级目录
-
第三个: mybatis的映射配置文件位置必须和dao接口的包结构相同
-
第四个:映射配置文件的mapper标签namespace属性的取值必须是dao接口的全限定类名
-
第五个:映射配置文件的操作配置(select) ,id属性的取值必须是dao接口的方法名
好处:当我们遵从了第三,四,五点之后,我们在开发中就无须再写dao的实现类。
三、mybatis入门案例(xml文件开发)
自定义mybatis框架(主要的目的是为了让大家了解mybatis中执行细节)
- 在test中创建一个测试类“MybatisTest”
public class MybatisTest {
public static void main(String[] args)throws Exception {
//1.读取配置文件
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
//2.创建SqlSessionFactory工厂
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(in);
//3.使用工厂产生SqlSession对象
SqlSession session = factory.openSession();
//4.使用SqlSession创建Dao接口的代理对象
IUserDao userDao = session.getMapper(IUserDao.class);
//5.使用代理对象执行方法
List<User> users = userDao.findAll();
for (User user : users){
System.out.println(user);
}
//6.释放资源
session.close();
in.close();
}
}
运行结果:
注意事项:不要忘记在映射配置中告知mybatis要封装到哪个实体类中,配置的方式:指定实体类的全限定类名,resultType=“com.dmj.domain.User”
四、使用注解开发
使用注解的形式代替映射文件IUserDao. xml,此时就不需要映射文件IUserDao. xml了(删除com.dmj.dao目录以及映射文件),并且在IUserDao接口中添加注解,以及在主配置文件SqlMapConifg. xml中修改mapper配置。
- 在接口IUserDao使用注解 @Select
public interface IUserDao {
/**
* 查询所有操作
*/
@Select("select * from user")
List<User> findAll();
}
- 在主配置文件中使用class属性指定被注解的dao全限定类名。class="com.dmj.dao.IUserDao"代替resource=“com/dmj/dao/IUserDao.xml”
<!--指定映射配置文件的位置,映射配置文件指的是每一个dao独立的配置文件
如果是用注解来配置的话,此处应该使用class属性指定被注解的dao全限定类名-->
<mappers>
<mapper class="com.dmj.dao.IUserDao"/>
</mappers>
- 此时,运行结果跟使用xml文件的结果一样。
五、总结
以上内容是我目前正在学习Mybatis做的笔记,在此过程中也有理解以及记录得不到位。如有错误之处,欢迎大家指正,随着知识的存储,以后会对内容进行补充和完善。