1.1Mybatis概述
1.1.1概念
Mybatis是持久层框架,用于简化JDBC
持久层:操作数据库的那一层,Mybatis对JDBC进行封装
JavaEE三层架构:表现层,业务层,持久层。
1.2Mybatis入门
需求:查询数据库表中的内容
步骤:
1.创建Maven模块,在pom.xml中添加依赖坐标。
在resource下创建logback.xml
2.在resource下编辑配置文件(mybatis-config.xml)
标签说明:1.:配置数据库的连接信息,其中可以有很多,通过default属性切换
2.下加载Mapper映射文件
3.在resource下mapper包中编写映射文件(***Mapper.xml)
写sql语句
4.在java下的pojo包中编写***的封装类
根据数据库表的属性封装
5.在外部编写测试类
(1)加载mybatis的配置文件,获取SqlSessionFactory:通过inputStream获取配置文件内容,创建SqlSessionFactory对象。
(2)获取SqlSession对象
(3)执行sql
(4)释放资源
1.3Mapper代理开发
1.3.1概述
目的:解决硬代码问题,简化后期执行sql
1.3.2要求
1.Mapper接口与Mapper映射文件同名
2.Mapper接口在java下的mapper包中,Mapper映射文件在resource下的mapper包中。
3.映射文件的namespace属性中要写Mapper接口的全限定名
4.Mapper接口中定义的方法名就是映射文件中的id,返回类型和参数类型也要一致。
1.3.3案例(查询user表中所有用户信息)
1.导坐标
2.配置文件(mybatis-config.xml)
配置内容:
pojo包
<typeAliases>
<package name="com.itheima.pojo"/>
</typeAliases>
数据库连接信息
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!--数据库连接信息-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql:///mybatis?useSSL=false"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
映射文件路径
如果Mapper接口名称和SQL映射文件名称相同,并在同一目录下,则可以使用包扫描的方式简化SQL映射文件的加载。
<mappers>
<package name="com.itheima.mapper"/>
</mappers>
3.UserMapper.java(接口类)
public interface UserMapper {
List<User> selectAll();
}
4.UserMapper.xml
namespace:对应接口的全限定名
<mapper namespace="com.itheima.mapper.UserMapper">
<select id="selectAll" resultType="com.itheima.pojo.User">
select * from tb_user;
</select>
</mapper>
5.User(封装类)
6.MybatisDemo.java(实现功能)
public class MybatisDemo {
public static void main(String[] args) throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
List<User> users = userMapper.selectAll();
System.out.println(users);
sqlSession.close();
}
}