1.环境配置
- 准备IDEA、Maven、Mysql
- 新建Maven工程
groupId | artifactId | version |
---|---|---|
org.mybatis | mybatis | 3.4.5 |
mysql | mysql-connector-java | 8.0.11 |
org.projectlombok | lombok | 1.18.6 |
<?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>edu.whu</groupId>
<artifactId>review_mybatis</artifactId>
<version>1.0-SNAPSHOT</version>
<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>8.0.11</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.6</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
- 创建表
create table user
(
id int auto_increment primary key,
username varchar(32) not null comment '用户名称',
birthday datetime null comment '生日',
sex char null comment '性别',
address varchar(256) null comment '地址'
);
这是数据库user表:
- 新建数据表对应的实体类User
package cn.whu.entity;
import lombok.Data;
import java.util.Date;
@Data
public class User {
private long id;
private String username;
private Date birthday;
private char sex;
private String address;
}
- 新建dao接口
package cn.whu.dao;
import cn.whu.entity.User;
import java.util.List;
public interface IUserDao {
List<User> findAll();
}
- 在resources目录下新建SqlMapConfig.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"/>
<!--配置数据源(连接池)-->
<dataSource type="POOLED">
<!--配置连接数据库的4个基本信息-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/ssm_mybatis"/>
<property name="username" value="root"/>
<property name="password" value="****(改成自己的密码)"/>
</dataSource>
</environment>
</environments>
<!--指定映射配置文件的位置,映射配置文件指的是每一个dao独立的配置文件-->
<mappers>
<mapper resource="cn/whu/mapper/IUserDao.xml"/>
<!-- 如果是注解开发则写成 -->
<!-- <mapper class="cn.whu.dao.IUserDao"/>-->
</mappers>
</configuration>
- 在resources目录下新建一个与dao接口结构相同的目录并新建mapper.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="cn.whu.dao.IUserDao">
<!-- 1.查询所有员工信息 id值为对应接口中方法的名字 -->
<select id="findAll" resultType="cn.whu.entity.User">
select * from user
</select>
</mapper>
- 到目前为止我们就写完了整个数据持久层代码了,接着我们测试一下效果
- 在test/java目录中新建MybatisTest.java文件,当然记住要安装junit依赖
import cn.whu.dao.IUserDao;
import cn.whu.entity.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class MybatisTest {
private InputStream in;
private SqlSessionFactoryBuilder builder;
private SqlSessionFactory factory;
private SqlSession sqlSession ;
private IUserDao userDao ;
public void init() throws IOException {
in = Resources.getResourceAsStream("SqlMapConfig.xml");
builder = new SqlSessionFactoryBuilder();
factory = builder.build(in);
sqlSession = factory.openSession();
userDao = sqlSession.getMapper(IUserDao.class);
}
public void destory() throws IOException {
sqlSession.commit();
sqlSession.close();
in.close();
}
@Test
public void TestSelectAll() throws IOException {
init();
List<User> users = userDao.findAll();
for(User user : users){
System.out.println(user);
}
destory();
}
}
- 结果展示:
mybatis xml配置开发总结
- 创建Maven工程并导入坐标
- 创建实体类与Dao接口
- 创建mybatis主配置文件SqlMapConfig.xml
- 创建映射配置文件IUserDao.xml
- 注意事项
- 在idea中创建目录和创建包是不一样的,在创建cn.whu.dao包时是三层的,而创建目录时却是一层,package是包、directory是目录
- 1.映射配置文件mapper标签namespace属性取值必须是dao接口的全限定类名
- 2.映射配置文件的操作配置中id属性取值必须为dao接口的方法名
- 3.mybatis的映射配置文件位置和dao接口的包结构相同,即接口为cn.edu.whu.dao下,映射配置文件也要在cn.edu.whu.dao下
- 当我们遵从1 2 3 的规范时,在开发中就无需再写dao的实现类了,剩下的就只有mybatis实现了!!!