mybatis
-
三层架构:
表现层: 是用于展示数据的 业务层: 是处理业务需求 持久层: 是和数据库交互的(mybatis属于持久层)
-
持久层技术解决方案:
JDBC技术: Connection PrepareStatement ResultSet Sping的JdbcTemplate: Sping中对jdbc的简单封装 Apache的DBUtils: 它和Sping的JdbcTemplate很想, 也是对Jdbc的简单封装 以上这些都不是框架 JDBC是规范 Sping的JdbcTemplate和Apache的DButils都只是工具类
-
mybatis的概述:
mybatis是一个持久层框架, 用java编写的. 它等装了 jdbc操作的很多细节, 是开发者只需要关注sql语句本身, 而无需关注注册驱动, 创建连接等繁杂过程 它使用了ORM思想实现了结果集的封装. ORM: Object Relational Mapping 对象关系映射 简单的说: 就是把数据库表和实体类及实体类的属性对应起来 让我们可以操作实体类就实现操作数据库表 user User id userId user_name userName 实体类中的属性和数据库表的字段名称保持一致. user User id id user_name user_name
-
mybatis入门配置:
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://127.0.0.1:3306/eesy_mybatis" /> <property name="username" value="root" /> <property name="password" value="123456" /> </dataSource> </environment> </environments> <!-- 指定映射配置文件的位置, 映射配置文件指的是每个dao独立的配置文件 如果是用注解来配置的话, 此处应该使用class属性指定被注释的dao全限定类名 --> <mappers> <!-- xml配置 --> <!--<mapper resource="com/xiaoge/dao/UserDao.xml"></mapper>--> <!-- 注解配置 --> <mapper class="com.xiaoge.dao.UserDao"></mapper> </mappers> </configuration> xml配置: * UserDao.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"> <!--namespace写全限定类名--> <mapper namespace="com.xiaoge.dao.UserDao"> <!--配置查询所有--> <!--id写方法的名称--> <!--resultType, 执行该sql以后, 获取的结果封装在User类中--> <select id="findAll" resultType="com.xiaoge.domain.User"> select * from user </select> </mapper> 注解配置(在接口方法上直接添加sql语句): import com.xiaoge.domain.User; import org.apache.ibatis.annotations.Select; import java.util.List; /** * @Author: 潇哥 * @DateTime: 2020/3/2 下午4:02 * @Description: 用户的持久层接口 */ public interface UserDao { /** * 查询所有操作 * @return */ @Select("select * from user") public List<User> findAll(); }
-
mybatis的入门:
mybatis的环境搭建 第一步: 创建maven工程并导入坐标 第二步: 创建实体类和dao接口 第三步: 创建Mybatis的主配置文件 SqlMapConfig.xml 第四步: 创建映射配置文件 UserDao.xml 环境搭建的注意事项: 第一个: 创建UserDao.xml 和 UserDao.java是名称是个人习惯, 在Mybatis中它把持久层的操作接口名称和映射文件也叫做: Mapper 所以: UserDao 和 UserMapper是一样的 第二个: 在idea中创建目录的时候, 它和包是不一样的, 包在创建时: com.xiaoge.dao他是三级结构 目录在创建时: com.xiaoge.dao是一级目录 第三个: mybatis的映射配置文件位置必须和dao接口的包结构相同 第四个: 映射配置文件的mapper标签namespace属性的取值必须是dao接口的全限定类名 第五个: 映射配置文件的操作配置(select), id属性的取值必须是dao接口的方法名 当遵从了第三, 四, 五点之后, 在开发中就无需在写dao的实现类. mybatis的入门案例: 第一步: 读取配置文件 InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml"); 第二步: 创建SqlSessionFactory工厂 SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); SqlSessionFactory factory = builder.build(is); 第三步: 使用工厂生产一个SqlSession对象 SqlSession session = factory.openSession(); 第四步: 使用SqlSession创建Dao接口的代理对象 UserDao userDao = session.getMapper(UserDao.class); 第五步: 使用代理对象执行方法 List<User> users = userDao.findAll(); for (User user : users) { System.out.println(user); } 第六步: 释放资源 session.close(); is.close(); 注意事项: 不要忘记在映射配置中告知mybatis要封装到那个实体类中 配置的方式: resultType="指定实体类的全限定类名" 明确: 我们在实际开发中, 都是越简便越好, 所以都是采用不写dao实现类的方式. 不管使用XML还是注解配置. 但是Mybatis它是支持写dao实现类的.