mybatis的环境搭建
第一步:创建maven工程并导入坐标
第二步:创建实体类和dao接口
第三步:创建Mybatis的主配置文件SqlMapConfig.xml
第四步:创建映射配置文件 UserDao.xml
环境搭建的注意事项
第一个:创建UserDao.xml 和UserDao.java时,名称是为了和我们之前的知识保持一致,在mybatis中它把持久成的操作接口名称和映射文件也叫Mapper
第二个:创建目录和包不一样,包创建,创建的是三级目录,目录创建,创建的是一级目录
第三个:mybatis的映射配置文件位置必须和dao接口的包结构相同
第四个:配置文件的mapper标签的namespace属性必须是dao接口全限定类名
第五个:映射配置文件的操作配置,id属性必须是dao接口的方法
当我们遵从了第三、四、五点之后,我们在开发中就无须再写dao的实现类
SqlMapConfig.xml文件,也就是全局mybatis文件的配置
<?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">
<environment id="mysql">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc.url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8"></property>
<property name="username" value="root"></property>
<property name="password" value="password"></property>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/mmz/dao/UserDao.xml"></mapper>
</mappers>
</configuration>
单个的UserDao配置
这个老师喜欢用UserDao进行命名配置,而一般都是UserMapper进行命名
<?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.mmz.dao.UserDao">
<!--配置查询所有-->
<select id="findAll">
select * from user
</select>
</mapper>
测试方法
一般都是用junit插件进行测试,他这个直接写了一个主方法
package com.mmz.test;
import com.mmz.dao.UserDao;
import com.mmz.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;
/**
* @Classname MybatisTest
* @Description TODO
* @Date 2020/1/7 12:21
* @Created by mmz
*/
public class MybatisTest {
public static void main(String[] args) throws Exception {
//1.读取配置文件
InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
//2.创建工厂
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
//3.使用工厂生产对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//4.使用sqlsessio,创建Dao接口的代理对象
UserDao userDao = sqlSession.getMapper(UserDao.class);
//5.使用代理对象执行方法
List<User> users = userDao.findAll();
for (User user:users
) {
System.out.println(user);
}
//6.释放资源
sqlSession.close();
inputStream.close();
}
}
运行失败,据我以往经验,应该是UserDao文件中,没有输入和输出的映射没有编写。加上之后,就成功了。
还有一点是要在数据库连接的时候加上
?characterEncoding=utf-8
mybatis的入门案例
第一步:读取配置文件
第二步:创建sqlsessionfactory工厂
第三步:创建sqlsession
第四步:创建dao接口的代理对象
第五步:执行dao中的方法
第六步:释放资源
注意事项:不要忘记在映射配置中告知mybatis要封装到哪个实体类中
配置的方式 指定实体类的全限定类名
自定义mybatis的分析
mybatis在使用代理dao的方式实现增删改查的时候做什么事么
第一:创建代理对象
第二:在代理对象创建selectList方法