>  기사  >  데이터 베이스  >  마이바티스의 기본 이해하기

마이바티스의 기본 이해하기

coldplay.xixi
coldplay.xixi앞으로
2021-01-22 09:29:551870검색

ㅋㅋㅋ 보고되었습니다!)

<?xml  version="1.0" encoding="UTF-8" ?>nbsp;configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd"><!--configuration核心配置  配置文件的根元素 --><configuration>
    <!-- 属性:定义配置外在化 -->
    <properties></properties>
    <!-- 设置:定义mybatis的一些全局性设置 -->
    <settings>
        <!-- 具体的参数名和参数值 -->
        <setting></setting>
    </settings>
    <!-- 类型名称:为一些类定义别名 -->
    <typealiases>
        <!-- 实体类少 建议 第一种取别名方式-->
        <typealias></typealias>
        <!--实体类多 建议  第二种取别名方式
        默认情况下用这种方式 别名为类名 首字母最好小写
        -->
        <package></package>
    </typealiases>
    <!-- 类型处理器:定义Java类型与数据库中的数据类型之间的转换关系 -->
    <typehandlers></typehandlers>
    <!-- 对象工厂 -->
    <objectfactory></objectfactory>
    <!-- 插件:mybatis的插件,插件可以修改mybatis的内部运行规则 -->
    <plugins>
        <plugin></plugin>
    </plugins>
    <!-- 环境:配置mybatis的环境 -->
    <environments>
        <!-- 环境变量:可以配置多个环境变量,比如使用多数据源时,就需要配置多个环境变量 -->
        <environment>
            <!-- 事务管理器 -->
            <transactionmanager></transactionmanager>
            <!-- 数据源 配置连接我的数据库-->
            <datasource>
                <property></property>
                <property></property>
                <property></property>
                <property></property>
            </datasource>
        </environment>
    </environments>
    <!-- 数据库厂商标识 -->
    <databaseidprovider></databaseidprovider>
    <!-- 映射器:指定映射文件或者映射类 -->
    <mappers>
        <mapper></mapper>
    </mappers></configuration>
마이바티스의 기본 이해하기Paging

데이터 액세스 감소 limt는 페이징을 구현합니다 sql 문: select * from table name limt 0,5;0: 데이터의 시작 위치

5: 길이 the data

하나: Mybatis

1 인터페이스

  List<user> getUserByLimit(Map<string> map);</string></user>
2 mapeer.xml
   <select>
        select *
        from mybatis.user
        limit ${starIndex},${pageSize}    </select>
2-1 결과 집합 매핑

<resultmap>
        <result></result>
    </resultmap>

3 test
 @Test
    public void getUserByLimitTest() {
        SqlSession sqlSession = MyBatisUtils.getSqlSession ();
        UserMapper mapper = sqlSession.getMapper (UserMapper.class);
        HashMap hashMap = new HashMap<string> ();
        hashMap.put ("starIndex", 1);
        hashMap.put ("pageSize", 2);
        List userByLimit = mapper.getUserByLimit (hashMap);
        for (Object o : userByLimit) {
            System.out.println (o);
        }

        sqlSession.close ();
    }</string>
    두 번째: RowBounds 메서드 사용
  • 1.인터페이스
  • List getUserList() ;
  • 2. 인터페이스 구현
<select>
        select *
        from mybatis.user    </select>

3. 테스트:

 /**
     * 测试使用RowBounds实现分页
     */@Test
    public void getUserByLimitRowBoundsTest() {
        SqlSession sqlSession = MyBatisUtils.getSqlSession ();
        RowBounds rowBounds = new RowBounds (0, 2);
        List<user> userList = sqlSession.selectList ("com.kuang.w.dao.UserMapper.getUserList", null, rowBounds);
        for (User user : userList) {
            System.out.println (user);
        }
        //关闭
        sqlSession.close ();
    }</user>

세 번째 방법: Mybatis의 페이징 플러그인 pageHeIper

sql 다대일 처리

사용 데이터베이스:

pojo

데이터베이스의 Teacher 테이블 테이블은 Teacher

package com.kuang.w.pojo;

import lombok.Data;

/**
 * @author W
 */
@Data
public class Teacher {
    private int tId;
    private String tName;

}
엔터티 클래스에 해당합니다. 데이터베이스의 사용자 테이블은 Student

package com.kuang.w.pojo;import lombok.Data;/**
 * @author W
 */@Datapublic class Student {
    private int id;
    private int tid;
    private String name;
    private String password;
    private Teacher teacher;}
1 엔터티 클래스에 해당합니다. 구성 구현 인터페이스
   List<student> getStudentList();</student>
  <!-- 多对一查询
    1 子查询 mysql 通过一个表里是数据   与另一个表的一个数据相的情况下 查询另一个的数据 一起显示
  -->
    <select>
        select *
        from mybatis.user;    </select>
    <resultmap>
        <!--  复杂属性 对象用 :association 集合用:collection-->
        <!--column 数据库中的字段 property 实体类中的属性-->
        <result></result>
        <result></result>
        <result></result>
        <!--javaType	一个 Java 类的全限定名
        ,或一个类型别名(关于内置的类型别名,可以参考上面的表格)。
        如果你映射到一个 JavaBean,MyBatis 通常可以推断类型。
        然而,如果你映射到的是 HashMap,
        那么你应该明确地指定 javaType 来保证行为与期望的相一致。-->
        <association></association>
    </resultmap>
    <select>
        select *
        from mybatis.teacher_table
        where tid = #{id};    </select>

mybatis-config.xm 구성마이바티스의 기본 이해하기
 <!--2 多表联查-->
    <select>
        select u.id       uid,
               u.name     uname,
               u.password upassword,
               u.tid      utid,
               t.tname
        from mybatis.user u,
             mybatis.teacher_table t
        where t.tid = u.tid;    </select>
     <!-- 映射-->
    <resultmap>
        <result></result>
        <result></result>
        <result></result>
        <result></result>
        <association>
            <result></result>
        </association>
    </resultmap>
3 테스트

<?xml  version="1.0" encoding="UTF8" ?>nbsp;configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration>
    <properties></properties>
    <settings>
        <setting></setting>
    </settings>
    <typealiases>
        <typealias></typealias>
        <typealias></typealias>
    </typealiases>

    <environments>
        <environment>
            <transactionmanager></transactionmanager>
            <datasource>
                <property></property>
                <property></property>
                <property></property>
                <property></property>
            </datasource>
        </environment>
    </environments>
    <mappers>
        <!--   <mapper resource="com/kuang/w/dao/TeacherMapper.xml"></mapper>
           <mapper resource="com/kuang/w/dao/StudentMapper.xml"></mapper>-->
        <mapper></mapper>
        <mapper></mapper>
    </mappers></configuration>
sql 일대다 처리

마이바티스의 기본 이해하기
데이터 테이블 구조에 해당하는 엔터티 클래스는 변경되지 않습니다.
첫 번째 방법: 다중 테이블 공동 쿼리

1 인터페이스

 @Test
    public void getStudentListTest() {
        SqlSession sqlSession = MyBatisUtils.getSqlSession ();
        StudentMapper mapper = sqlSession.getMapper (StudentMapper.class);


        List<student> studentList = mapper.getStudentList ();
        for (Student student : studentList) {
            System.out.println (student);
        }

        sqlSession.commit ();
        sqlSession.close ();
    }</student>
2.1 xml 구현 인터페이스

    List<teacher> getTeacher(int tid);</teacher>
2.2 매핑 구성

  <select>
        select t.tid, t.tname, u.id, u.name, u.password
        from mybatis.user u,
             mybatis.teacher_table t
        where t.tid = u.tid
          and t.tid = #{tid};    </select>
3 테스트

<resultmap>
        <result></result>
        <result></result>
        <!--  复杂属性 对象用 :association 集合用:collection-->
        <collection>
            <!--javaType 指定属性类型 一个 Java 类的全限定名-->
            <result></result>
            <result></result>
            <result></result>
            <result></result>
        </collection>
    </resultmap>
Result

 /*测试一对多*/
    @Test
    public void getTeacherTest2() {
        SqlSession sqlSession = MyBatisUtils.getSqlSession ();
        TeacherMapper mapper = sqlSession.getMapper (TeacherMapper.class);
        List<teacher> teacher = mapper.getTeacher (1);
        for (Teacher teacher1 : teacher) {
            System.out.println (teacher1);
        }

		//提交事务   架子  这里可以不要
        sqlSession.commit ();
        // 关闭
        sqlSession.close ();
    }</teacher>
두 번째 방법: 하위 쿼리

1인터페이스

com.intellij.rt.junit.JUnitStarter -ideVersion5 -junit4 com.kuang.w.dao.myTest,getTeacherTest2
Logging initialized using 'class org.apache.ibatis.logging.stdout.StdOutImpl' adapter.PooledDataSource forcefully closed/removed all connections.PooledDataSource forcefully closed/removed all connections.PooledDataSource forcefully closed/removed all connections.PooledDataSource forcefully closed/removed all connections.Opening JDBC Connection
Created connection 164974746.Setting autocommit to false on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@9d5509a]==>  Preparing: select t.tid, t.tname, u.id, u.name, u.password from mybatis.user u, mybatis.teacher_table t where t.tid = u.tid and t.tid = ?; ==> Parameters: 1(Integer)
2 인터페이스 구현

    List<teacher> getTeacher(int tid);</teacher>

3테스트 위와 같습니다. . . .


관련 무료 학습 권장 사항:

mysql 데이터베이스

(동영상)

위 내용은 마이바티스의 기본 이해하기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제