Mybatis流程

Mybatis

  • 善用官方文档

    • 用Maven创建项目,导入依赖

      <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>x.x.x</version>
      </dependency>
      
    • 写接口BlogMapper,写类Blog,配置mysql、junit、log4j等

    • log4j有一个配置文件,提供日志功能,执行步骤

      # Global logging configuration
      log4j.rootLogger=DEBUG, stdout
      # Console output...
      log4j.appender.stdout=org.apache.log4j.ConsoleAppender
      log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
      log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
      
    • 每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。构建SqlsessionFactory(在测试类中编写)

      String resource = "org/mybatis/example/mybatis-config.xml";
      InputStream inputStream = Resources.getResourceAsStream(resource);
      SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
      
    • 配置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>
          <environments default="development">
              <environment id="development">
                  <transactionManager type="JDBC"/>
                  <dataSource type="POOLED">
                      <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                      <property name="url" value="jdbc:mysql://localhost:3306/run2?useSSL=false&amp;serverTimezone=UTC"/>
                      <property name="username" value="root"/>
                      <property name="password" value="ssss1998"/>
                  </dataSource>
              </environment>
          </environments>
          <mappers>
              <mapper resource="dao/Mapper.xml"/>
          </mappers>
      </configuration>
      
    • 写相应的映射项,例子(类Student、接口Studentdao)

      <?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.shaon.Studentdao">
          <select id="selectallstudent" resultType="com.shaon.Student">
              select * from student
          </select>
      </mapper>
      
    • 从SqlsessionFactory获取Sqlsession(在测试类中编写)

      try (SqlSession session = sqlSessionFactory.openSession()) {
        BlogMapper mapper = session.getMapper(BlogMapper.class);
        Blog blog = mapper.selectBlog(101);
      }
      
    • 使用resultMap要注意
      Colum的值要和数据库中的列名一样!!!!(如果不一样就查询不到),当映射的类的属性名和数据库的列名不一致时这么做。这个操作用来解决类中的属性名和数据库中的列名不一致的情况

       <resultMap id="studentResultMap" type="com.shaon.Student">
           <id property="id" column="ID"/>
           <!--""里面的值不能留空格        -->
           <result property="student_name" column="name"/>
           <result property="dept" column="dept_name"/>
           <result property="cred" column="tot_cred"/>
           <result property="birth" column="birthday"/>
       </resultMap>
      
    • as之前的是数据库列名

    <select id="selectUsers" resultType="User">
     select
       user_id             as "id",
       user_name           as "userName",
       hashed_password     as "hashedPassword"
     from some_table
     where id = #{id}
    </select>
    
posted @ 2021-03-12 15:09  shaon111  阅读(41)  评论(0)    收藏  举报