1,什么是MyBatis:
- mybatis是一款持久层框架;
-
2,java的三层架构:
表现层;
- 业务层;
-
3,框架的概念:
框架就是一个半成品软件,是一套可重用的、通用的、软件基础代码模型;
- 在框架的基础之上构建软件编写更加高效、规范、通用、可扩展;
4,Mybatis的配置使用步骤:
A,使用maven创建并配置好maven结构项目模块;(见Maven的配置);
B,在resources目录下配置MyBatis核心配置(.xml)文件:文件名为:mybatis-config.xml
其中:UserName和Password是数据库用户名和密码,这两个是包名;
. 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>
<settings>
<!--在控制台显示SQL语句-->
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
<!--定义实体类别名-->
<typeAliases>
<package name="top.jztice5.pojo"/>
</typeAliases>
//数据源为默认(defalut)
<environments default="default">
<!--环境变量-->
<environment id="default">
<!--事务管理器-->
<transactionManager type="JDBC"/>
<!--数据源-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/day17?useSSL=false&characterEncoding=utf8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!--加载实体类映射文件-->
<mappers>
<package name="top.jztice5.mapper"/>
</mappers>
</configuration>
C,根据核心配置的别名路径创建mapper和pojo包:
1. 在**mapper(映射)包**中创建**映射接口** UserMapper:
public interface UserMapper {
//接口中的方法:
List<User> selectAll();
}
2. 在**pojo包**中创建**属性(对象)类** User:
public class User {
//写属性对象:如:
private String name;
//getter和setter方法及构造器,toString方法:略
}
D,在resources目录下创建实体类映射配置文件(SQL映射文件):(创建成功后,会与映射接口产生连接,显示小鸟)
注意:路径一定要该包名路径一致;且 . 要换成 / ; 因为创建的是文件夹而不是包:
命名格式:;
然后,在此目录下创建实体类映射配置文件:
此namespace写之前创建的映射接口路径(带包路径);
创建成功后的 .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="top.jztice5.mapper.UserMapper">
//id = 就填上执行的映射接口中的方法; (resultType)结果集为:实体(属性)类所在的包路径;
<!-- 映射的接口方法 :id后面的方法名 ;框架创建代理对象,当调用映射的接口方法后,
代理对象就会找到并执行对应id的sql语句,再将结果集或需要的数据返回到实体类中-->
<!-- 在创建代理对象的时候就会加载映射文件 (mapper.xml)-->
<select id="selectAll" resultType="top.jztice5.pojo.User">
//select标签就写查询的sql语句;其它操作就使用对应的标签即可;
select * from user;
</select>
</mapper>
注意!!!:在resources下的xml文件路径与dao层包路径一定要相同,否则会导致无法绑定映射对象;(报错:Invalid bound statement (not found) );
两者的路径要一致;
E,在测试类能够执行数据库操作就代表Mybaits配置成功:
1. 在main下创建自定义工具类:
2. 在Test下创建测试类:
public class MybatisTest {
@Test
public void setMbbatisTest() throws IOException {
//调用工具类获取会话对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
//创建mapper接口的代理对象,生成(子)类对象;
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//实现增删改查,并将结果集放到集合中
List <User> users = mapper.selectAll();
//关闭资源(释放资源)
sqlSession.close();
//输出
users.forEach(System.out :: println);
}
}
F,工具类 中 :MybatisUtil 的详细创建代码:
public class MybatisUtils {
private static SqlSessionFactory factory;
static {
InputStream inputStream=null;
try {
//获取类路径下的mybatis配置文件:
inputStream = Resources.getResourceAsStream("mybatis-config.xml");
//创建会话工厂建造类
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//创建会话工厂
factory = builder.build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
//获取会话对象;
public static SqlSession getSqlSession(){
return factory.openSession();
}
}