1,什么是MyBatis:

  1. mybatis是一款持久层框架;
  2. 能够简化java的开发,提高效率;

    2,java的三层架构:

  3. 表现层;

  4. 业务层;
  5. 持久层

    3,框架的概念:

  6. 框架就是一个半成品软件,是一套可重用的、通用的、软件基础代码模型;

  7. 在框架的基础之上构建软件编写更加高效、规范、通用、可扩展;

4,Mybatis的配置使用步骤:

A,使用maven创建并配置好maven结构项目模块;(见Maven的配置);

B,在resources目录下配置MyBatis核心配置(.xml)文件:文件名为:mybatis-config.xml

image.pngimage.png
其中:UserName和Password是数据库用户名和密码,image.png这两个是包名;
. xml文件详细代码如下:

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6. <settings>
  7. <!--在控制台显示SQL语句-->
  8. <setting name="logImpl" value="STDOUT_LOGGING"/>
  9. </settings>
  10. <!--定义实体类别名-->
  11. <typeAliases>
  12. <package name="top.jztice5.pojo"/>
  13. </typeAliases>
  14. //数据源为默认(defalut)
  15. <environments default="default">
  16. <!--环境变量-->
  17. <environment id="default">
  18. <!--事务管理器-->
  19. <transactionManager type="JDBC"/>
  20. <!--数据源-->
  21. <dataSource type="POOLED">
  22. <property name="driver" value="com.mysql.jdbc.Driver"/>
  23. <property name="url" value="jdbc:mysql://localhost:3306/day17?useSSL=false&amp;characterEncoding=utf8"/>
  24. <property name="username" value="root"/>
  25. <property name="password" value="root"/>
  26. </dataSource>
  27. </environment>
  28. </environments>
  29. <!--加载实体类映射文件-->
  30. <mappers>
  31. <package name="top.jztice5.mapper"/>
  32. </mappers>
  33. </configuration>

C,根据核心配置的别名路径创建mapper和pojo包:

image.png

  1. 1. 在**mapper(映射)包**中创建**映射接口** UserMapper
  1. public interface UserMapper {
  2. //接口中的方法:
  3. List<User> selectAll();
  4. }
  1. 2. 在**pojo包**中创建**属性(对象)类** User
  1. public class User {
  2. //写属性对象:如:
  3. private String name;
  4. //getter和setter方法及构造器,toString方法:略
  5. }

D,在resources目录下创建实体类映射配置文件(SQL映射文件):(创建成功后,会与映射接口产生连接,显示小鸟)

image.png 注意:路径一定要该包名路径一致;且 . 要换成 / ; 因为创建的是文件夹而不是包:image.png
命名格式:image.png
然后,在此目录下创建实体类映射配置文件:
image.png image.png此namespace写之前创建的映射接口路径(带包路径);
创建成功后的 .xml 文件内容:

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
  5. <mapper namespace="top.jztice5.mapper.UserMapper">
  6. //id = 就填上执行的映射接口中的方法; (resultType)结果集为:实体(属性)类所在的包路径;
  7. <!-- 映射的接口方法 id后面的方法名 ;框架创建代理对象,当调用映射的接口方法后,
  8. 代理对象就会找到并执行对应idsql语句,再将结果集或需要的数据返回到实体类中-->
  9. <!-- 在创建代理对象的时候就会加载映射文件 mapper.xml)-->
  10. <select id="selectAll" resultType="top.jztice5.pojo.User">
  11. //select标签就写查询的sql语句;其它操作就使用对应的标签即可;
  12. select * from user;
  13. </select>
  14. </mapper>

注意!!!:在resources下的xml文件路径与dao层包路径一定要相同,否则会导致无法绑定映射对象;(报错:Invalid bound statement (not found) ); image.pngimage.png 两者的路径要一致;

E,在测试类能够执行数据库操作就代表Mybaits配置成功:

  1. 1. main下创建自定义工具类:

image.png

  1. 2. Test下创建测试类:

image.png

  1. public class MybatisTest {
  2. @Test
  3. public void setMbbatisTest() throws IOException {
  4. //调用工具类获取会话对象
  5. SqlSession sqlSession = MybatisUtils.getSqlSession();
  6. //创建mapper接口的代理对象,生成(子)类对象;
  7. UserMapper mapper = sqlSession.getMapper(UserMapper.class);
  8. //实现增删改查,并将结果集放到集合中
  9. List <User> users = mapper.selectAll();
  10. //关闭资源(释放资源)
  11. sqlSession.close();
  12. //输出
  13. users.forEach(System.out :: println);
  14. }
  15. }

在mybatis的数据库连接池创建流程:image.png

F,工具类 中 :MybatisUtil 的详细创建代码:

  1. public class MybatisUtils {
  2. private static SqlSessionFactory factory;
  3. static {
  4. InputStream inputStream=null;
  5. try {
  6. //获取类路径下的mybatis配置文件:
  7. inputStream = Resources.getResourceAsStream("mybatis-config.xml");
  8. //创建会话工厂建造类
  9. SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
  10. //创建会话工厂
  11. factory = builder.build(inputStream);
  12. } catch (IOException e) {
  13. e.printStackTrace();
  14. }
  15. }
  16. //获取会话对象;
  17. public static SqlSession getSqlSession(){
  18. return factory.openSession();
  19. }
  20. }