01.Mybatis课程介绍及环境搭建、02.Mybatis入门案例
04.mybatis概述、05.mybatis环境搭建-前期准备、06.mybatis的环境搭建、07.环境搭建的注意事项
1 mybatis的入门测试、2 mybatis入门案例中的设计模式分析、3 mybatis注解开发和编写dao实现类的方式
IntelliJ IDEA 2018.3.6 x64
第一步:创建maven工程并导入依赖坐标
- 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>com.itheima</groupId>
<artifactId>day01_eesy_01mybatis</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.17</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
第二步 创建实体类和dao的接口
package com.itheima.dao;
import com.itheima.domain.User;
import java.util.List;
/**
*
* 用户的持久层接口
*/
public interface IUserDao {
/**
*
* 查询所有操作
*/
List<User> findAll();
}
package com.itheima.domain;
import java.io.Serializable;
import java.util.Date;
//省略了自动生成的get/set方法
public class User implements Serializable {
private Integer id;
private String username;
private Date birthday;
private String sex;
private String address;
第三步 创建Mybatis的主配置文件: 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"></transactionManager> <!--配置连接池(数据源)--> <dataSource type="POOLED"> <!-- 配置数据库的4个基本信息 --> <!--数据库连接的信息:驱动类、连接地址、用户名、密码 --> <property name="driver" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/eesy_mybatis ?serverTimezone=Asia/Shanghai"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <!-- 指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件 --> <mappers> <!-- Mapper映射文件的名字和接口文件的名字一致(非强制性) --> <mapper resource="com/itheima/dao/IUserMapper.xml"/> </mappers> </configuration>
第四步 创建映射Mapper配置文件
IUserMapper.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.itheima.dao.IUserDao">
<!-- 配置查询所有-->
<select id="findAll">
select * from user ;
</select>
</mapper>
二、Mybatis的入门测试程序
导入log4j.properties
编写测试用例
package com.itheima.test; /* * mybatis的入门案例 */ import com.itheima.dao.IUserDao; import com.itheima.domain.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 java.io.InputStream; import java.util.List; public class MybatisTest { public static void main(String[] args)throws Exception { //1.读取配置文件 //getResourceAsStream报异常,需要throws Exception InputStream input = Resources.getResourceAsStream("SqlMapConfig.xml"); //2.创建SqlSessionFactory工厂 //SqlSessionFactory是个接口不能直接new对象 SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); SqlSessionFactory factory = builder.build(input); //3.使用工厂生产SqlSession对象 SqlSession session = factory.openSession(); //4.使用SqlSession创建Dao接口的代理对象 IUserDao userDao = session.getMapper(IUserDao.class); //5.使用代理对象执行方法 List<User> users = userDao.findAll(); //foreach增强for循环 for (User user: users) { System.out.println(user); } //6.释放资源 session.close(); input.close(); } //1.读取配置文件 //2.创建SqlSessionFactory工厂 //3.使用工厂生产SqlSession对象 //4.使用SqlSession创建Dao接口的代理对象 //5.使用代理对象执行方法 //6.释放资源 }
不要忘记在映射配置文件中,告知mybatis要把查询结果封装到哪个实体类中
IUserMapper.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.itheima.dao.IUserDao"> <!-- 配置查询所有的sql语句,同时配置返回结果到关联的实体类--> <select id="findAll" resultType="com.itheima.domain.User"> select * from user ; </select> </mapper>
end