Mybatis自学日志05(复杂环境的搭建)

建表

create table student(
id int(10) primary key,
name varchar(20) default null,
tid int(10) default null,
foreign key(tid) references teacher(id)
)
insert into teacher values(1,'秦老师');
insert into student values(1,'小明',1);
insert into student values(2,'小红',1);
insert into student values(3,'小张',1);
insert into student values(4,'小李',1);
insert into student values(5,'小王',1);

接口
TeacherMapper
StudentMapper

package com.tjrac.dao;

import com.tjrac.pojo.Teacher;
import com.tjrac.pojo.User;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;
import java.util.Map;

public interface TeacherMapper {
    //查询全部用户
    List<Teacher> getTeacherList(int i);

}
package com.tjrac.dao;

import com.tjrac.pojo.Student;
import com.tjrac.pojo.Teacher;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface StudentMapper {
    List<Student> getStudentList();
    List<Student> getStudentList2();
}

实体类
Student
Teacher

package com.tjrac.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Student {
    private  int id;
    private  String name;
    private Teacher teacher;
}
package com.tjrac.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Teacher {
    private int id;
    private  String name;

}

配置文件
StudentMapper.xml
TeacherMapper.xml
mybatis-config.xml

StudentMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--mybatis的核心配置文件是有一定顺序的 -->
<mapper namespace="com.tjrac.dao.StudentMapper">
    <!--
    按结果查询
    实现了select student.id,student.name,teacher.name from student,teacher where student.tid=teacher.id
    -->
    <select id="getStudentList2" resultMap="StudentTeacher2">
      select student.id,student.name,teacher.name as tname from student,teacher where student.tid=teacher.id
    </select>
    <resultMap id="StudentTeacher2" type="com.tjrac.pojo.Student">
        <result property="id" column="id"/>
        <result property="name" column="name"/>
        <association property="teacher" javaType="com.tjrac.pojo.Teacher">
            <result property="name" column="tname"/>

        </association>
    </resultMap>

    <!--==========================================================-->
    <!--
    按嵌套查询
    实现了select student.id,student.name,teacher.name from student,teacher where student.tid=teacher.id
    -->
    <select id="getStudentList" resultMap="StudentTeacher">
      select * from student
    </select>
    <select id="getTeacherList" resultType="com.tjrac.pojo.Teacher">
      select * from teacher where id=#{id}
    </select>
    <resultMap id="StudentTeacher" type="com.tjrac.pojo.Student" >
        <result property="id" column="id"/>
        <result property="name" column="name"/>
        <association property="teacher" column="tid" javaType="com.tjrac.pojo.Teacher" select="getTeacherList"/>
    </resultMap>
</mapper>
TeacherMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--mybatis的核心配置文件是有一定顺序的 -->
<mapper namespace="com.tjrac.dao.TeacherMapper">
    <select id="getTeacherList" resultType="com.tjrac.pojo.Teacher">
      select * from teacher where id=#{id}
    </select>
</mapper>
mybatis-config.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>

    <!-- 配置运行环境 -->
    <!-- 在MyBatis里面可以通过environments标签配置多套运行环境,但是有一套默认的运行环境。
    默认的运行环境写在default属性中。
    environments标签下面的每一个environment标签都是一套运行环境,每一套运行环境有一个
    唯一指定的id属性。
    在每一套运行环境中需要配置:
    1、事务管理transactionManager标签:我们采用JDBC的事务管理。
    2、数据源dataSource标签:我们采用的是POOLED,这种类型是MyBatis自带的数据源。
        也可以使用JNDI,JNDI是Tomcat的数据源。
    3、在数据源中设置相应的property属性。四个属性分别对应database.properties里面的属性。
     -->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <!--mybatis数据库名
                useSSL=true&amp;安全连接
                useUnicode=true&amp;设置编码
                characterEncoding=UTF-8&amp;使用UFT-8编码
                serverTimezone=Asia/Shanghai设置时区
                -->
                <property name="url"
                          value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=Asia/Shanghai
" />
                <property name="username" value="root" />
                <property name="password" value="654321" />
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/tjrac/dao/StudentMapper.xml"/>
        <mapper resource="com/tjrac/dao/StudentMapper.xml"/>
    </mappers>

</configuration>

测试类

package com.tjrac.dao;
import com.tjrac.pojo.Student;
import com.tjrac.pojo.Teacher;
import com.tjrac.pojo.User;
import com.tjrac.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Mytest {

    @Test
    public void getTeacherList(){
        //第一步:获取SqlSession对象
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        //第二步:执行SQL
        TeacherMapper teacherDao= sqlSession.getMapper(TeacherMapper.class);
        List<Teacher> list=teacherDao.getTeacherList(1);
        for(Teacher t: list){
            System.out.println(t.toString());
        }
        sqlSession.close();
    }
    @Test
    public void getStudentList(){
        //第一步:获取SqlSession对象
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        //第二步:执行SQL
        StudentMapper teacherDao= sqlSession.getMapper(StudentMapper.class);
        List<Student> list=teacherDao.getStudentList();
        for(Student t: list){
            System.out.println(t.toString());
        }
        sqlSession.close();
    }
    @Test
    public void getStudentList2(){
        //第一步:获取SqlSession对象
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        //第二步:执行SQL
        StudentMapper teacherDao= sqlSession.getMapper(StudentMapper.class);
        List<Student> list=teacherDao.getStudentList();
        for(Student t: list){
            System.out.println(t.toString());
        }
        sqlSession.close();
    }
}

发布了20 篇原创文章 · 获赞 0 · 访问量 193

猜你喜欢

转载自blog.csdn.net/qq_43697752/article/details/103826836