环境搭建
- 首先创建一个maven项目,在pom文件中加入MyBatis依赖【同时也要有MySQL的依赖】
<!--mybatis依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.5</version>
</dependency>
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
- 创建表文件,实体类
public class User{
private Integer id;
private String name;
private Integer age;
//提供get和set方法 toString重写
//实体类中的属性和表中的字段尽量保持一致
//实现序列化接口
create table tbl_user(
id int primary key auto_increment,
name varchar(255),
age int
);
#添加数据
insert into value(name,age) values("张三",18),("李四",28),("王五",38);
- 创建该类的接口 【dao接口】
public interface UserDao{
//提供抽象方法 [查询所有的用户的方法]
List<User> selectAll();
}
- 创建主配置文件
在resources目录下创建 mybatis-config文件
<?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">
<!--MySQL驱动-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
<property name="username" value="root"/>
<property name="password" value="0000"/>
</dataSource>
</environment>
</environments>
<!--把每个类对应的Mapper文件,在这里注册一下-->
<mappers>
<mapper resources="com/yixuexi/dao/UserMapper.xml"></mapper>
</mappers>
</configuration>
- 创建映射配置文件 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.yixuexi.dao.UserDao">
<insert id="selectAll" resultType="com.yixuexi.entity.User">
select id,name,age from user;
</insert>
</mapper>
创建完成后,在主配置文件中注册映射
<mappers>
<mapper resources="com/yixuexi/dao/UserMapper.xml"></mapper>
</mappers>
注意:
- namespace 是dao中对应的接口全限定类名
- 标签中的id是dao接口中的方法名
- resulteType是查询结果是什么类型,这里是User类型,记住要写全限定类名
搭建环境注意事项:
- 可以在src目录的dao包中创建,但是maven不会编译src下的xml文件,所以要添加插件
- 建议在resources目录下创建一摸一样的文件目录结构,mapper文件放对应的dao文件中
- 当mapper文件在resources中,在主配置文件中配置的话 要使用 / 分开,例如:com/yixuexi/dao/UserMapper.xml
- IDEA在创建目录的时候,和包是不一样的
- 包---->com.yixuexi.dao
- 目录 com/yixuexi/dao 所以目录要分三次来创建 - 在MaBatis中他把持久层的操作接口也叫Mapper,同时映射文件也叫mapper所以听到别人说mapper,第一反应就是dao接口和映射文件
- 当遵从了以上这些条件,不需要创建接口实现类就能实现查询操作。【MyBatis底层给你创建了】
简单测试
//读取配置文件
InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
//创建工厂
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
//通过工厂生产Session
SqlSession session = factory.openSession();
//使用SqlSession创建DAO接口的代理对象,传入dao接口class
UserDao userDao = session.getMapper(UserDao.class);
//使用代理对象执行方法
List<User> users = userDao.selectAll();
//遍历得到的数据
for(User u : users){
System.out.println(u);
}
//释放资源
sqlSession.close();
in.close();
这样就查询出来结果啦