mybatis的入门
1.mybatis的环境搭建
第一步:创建maven工程并导入坐标
<dependencies> pom.xml中
<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.16</version>
</dependency>
</dependencies>
第二步:在domain 中 创建实体类User 属性对应数据中的列 (ORM思想) 在Dao 中 创建 dao 的接口
第三步:在resource中 创建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">
<configuration>
<environments default="mysql">
配置mysql的环境
<environment id="mysql"> id default 必须一样 名可以随意
配置事务的类型
<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/test"/>
<property name="username" value="root"/>
<property name="password" value="123"/>
</dataSource>
</environment>
</environments>
指定映射配置文件的位置,相当于每一个 UserDaoImpl 实现类
<mappers>
<mapper resource="com/wyc/Dao/UserDao.xml"/> 资源文件中层级结构 与UserDao结构一样
</mappers>
</configuration>
第四步:在resourse中 创建映射配置文件 UserDao.xml 相当于 UserDaoImpl 层级结构与UserDao一样 但是在resourse中
<?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.wyc.Dao.UserDao">
配置查询所有 路径必须为类的全路径 封装为什么对象
<select id="findAll" resultType="com.wyc.domain.User"> id必须 和方法的名一样
select * from user
</select>
</mapper>
2.环境搭建的注意事项:
第一个:创建UserDao.xml 和 UserDao.java时名称是为了和我们之前的知识保持一致。
在Mybatis中它把持久层的操作接口名称和映射文件也叫做:Mapper 所以:UserDao 和 UserMapper是一样的
第三个:mybatis的映射配置文件位置必须和dao接口的包结构相同
第四个:映射配置文件的mapper标签namespace属性的取值必须是dao接口的全限定类名
第五个:映射配置文件的操作配置(select),id属性的取值必须是dao接口的方法名
当我们遵从了第三,四,五点之后,我们在开发中就无须再写dao的实现类。
使用注解配置
1.在USerDao 接口中 添加注解
public interface UserDao {
@Select("select * from user") sql语句 通过注解获取sql语句
public List<User> findAll(); 根据这的User 获取封装为什么类型
}
2.不要 resource 中的 映射配置了 但是需要修改主配置文件的映射关系
如果是用注解配置的话 resource 中的 映射关系配置就不需要了 但是需要class指定一个Dao接口-->
<mappers>
<mapper class="com.wyc.Dao.UserDao"/>
</mappers>
测试类
public static void main(String[] args)throws Exception {
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml"); 1.读取配置文件
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); 2.创建SqlSessionFactory工厂
SqlSessionFactory factory = builder.build(in);
SqlSession session = factory.openSession(); 3.使用工厂生产SqlSession对象
UserDao userDao = session.getMapper(UserDao.class); 4.使用SqlSession创建Dao接口的代理对象
List<User> users = userDao.findAll(); 5.使用代理对象执行方法
for(User user : users){
System.out.println(user);
}
6.释放资源
session.close();
in.close();
}}