实验二. Mybatis技术(2)

一、利用mapper.xml绑定接口实现对teacher表中的数据的增、删、改、查。

1、POJO实体类(Teacher.java)

package wzu.pojo;

public class Teacher {
    private int TNO;
    private String TNAME;
    private String TITLES;
    private String PHONE;

    @Override
    public String toString() {
        return "Teacher{" +
                "TNO=" + TNO +
                ", TNAME='" + TNAME + '\'' +
                ", TITLES='" + TITLES + '\'' +
                ", PHONE='" + PHONE + '\'' +
                '}';
    }

//省略set、get方法
}

2、mapper类【实体的映射类】(TeacherMapper.java)

是接口。

package wzu.mapper;

import wzu.pojo.Teacher;
import java.util.List;

public interface TeacherMapper {
    Teacher select_id();
    List<Teacher> select_all();
    List<Teacher> select_zhou();

    void add(Teacher teacher);
    void update();
    void delete();
}

3、mapper配置文件【mapper类的配置文件】(TeacherMapper.xml) 

<mapper namespace="wzu.mapper.TeacherMapper">

SQL映射文件,对应于相应的POJO,一般以 “ POJO的名+Mapper ” 来命名。 

wzu.mapper.Teacher         +         Mapper         =         wzu.mapper.TeacherMapper

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--        ?????????-->
<mapper namespace="wzu.mapper.TeacherMapper">

    <select id="select_id" resultType="wzu.pojo.Teacher">
        select * from teacher where TNO='121002'
    </select>

    <select id="select_all" resultType="wzu.pojo.Teacher">
        select * from teacher;
    </select>

    <select id="select_zhou" resultType="wzu.pojo.Teacher">
        select * from teacher where TNAME like '周%'
    </select>

    <insert id="add" parameterType="wzu.pojo.Teacher">
<!--        INSERT INTO teacher(TNO,TNAME,TITLES,PHONE) VALUES ('210002', '王强', '高级实验师', '18041314946');-->
        INSERT INTO teacher(TNO,TNAME,TITLES,PHONE) VALUES (#{TNO},#{TNAME},#{TITLES},#{PHONE});
<!-- ps: values内容变量 与 该Teacher类中变量 一致!!       -->
    </insert>

    <update id="update" parameterType="wzu.pojo.Teacher">
        UPDATE `mybatis`.`teacher` SET `TNAME` = '李刚' WHERE (`TNO` = '121004');
    </update>

    <delete id="delete" parameterType="wzu.pojo.Teacher">
        DELETE FROM `mybatis`.`teacher` WHERE (`TNO` = '121001');
    </delete>
</mapper>

4、 核心配置文件mybatis-config.xml

    <mappers>
        <mapper resource="wzu/mapper/TeacherMapper.xml"/>
    </mappers>

Mapper.xml配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--    引入database.properties文件-->
<!--    <properties resource="database.properties"/>-->
    <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/mybatis?serverTimezone=UTC"/>
<!--                useUnicode=true&characterEncoding=utf8&useSSL=false&-->
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
<!--    将mapper文件加入配置文件中-->
    <mappers>
        <mapper resource="wzu/mapper/TeacherMapper.xml"/>
    </mappers>
</configuration>

5、 测试类

package wzu.test;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import wzu.mapper.TeacherMapper;
import wzu.pojo.Teacher;


import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class TeacherMapperTest {
    public static void main(String args[]) throws IOException{
        System.out.println("-------");
        String resource= "mybatis-config.xml";
        InputStream is=Resources.getResourceAsStream(resource);
        SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(is);
        SqlSession sqlSession=factory.openSession();

        TeacherMapper mapper = sqlSession.getMapper(TeacherMapper.class);

//(1)查询tno=“121002”的客户的记录;
        Teacher sel_id=mapper.select_id();
        System.out.println(sel_id.toString());
        System.out.println("");
//(2)查询全部教师记录;
        List<Teacher> sel_all=mapper.select_all();
        for (int i = 0; i < sel_all.size(); i++) {
            System.out.println(sel_all.get(i).toString());
        }
        System.out.println("");
//(3)查询姓周的教师记录;
        List<Teacher> sel_zhou=mapper.select_zhou();
        for (int i = 0; i < sel_zhou.size(); i++) {
            System.out.println(sel_zhou.get(i).toString());
        }
        System.out.println("");

//        sqlSession.getMapper(TeacherMapper.class).类名();
//                              ——该类,在 wzu\mapper\TeacherMapper.java
//(1)新增教师记录:(“210002”,“王强”,“高级实验师”,“18041314946”);
        Teacher teacher=new Teacher();
        teacher.setTNO(210002);
        teacher.setTNAME("王强");
        teacher.setTITLES("高级实验师");
        teacher.setPHONE("18041314946");
        sqlSession.getMapper(TeacherMapper.class).add(teacher);
        sqlSession.commit();
//      操作,需要提交!
//(2)修改教师记录:将工号为“121004”的教师教师姓名改为“李刚”;
        sqlSession.getMapper(TeacherMapper.class).update();
        sqlSession.commit();
//(3)删除工号为“121001”的教师记录;
        sqlSession.getMapper(TeacherMapper.class).delete();
        sqlSession.commit();

        sqlSession.close();

    }

}

第1次运行;

 第2次运行;

  1. 新增教师记录:(“210002”,“王强”,“高级实验师”,“18041314946”);已完成
  2. 修改教师记录:将工号为“121004”的教师教师姓名改为“李刚”。已完成
  3. 删除工号为“121001”的教师记录,已完成

二、利用注解方式绑定接口实现对teacher表中的数据的增、删、改、查。

1、POJO实体类(Teacher.java)——与上题相同

2、mapper类【实体的映射类:接口】(TeacherMapper.java)——相当于上题2、3

  • mapper类【实体的映射类】(TeacherMapper.java)
  • mapper配置文件【mapper类的配置文件】(TeacherMapper.xml)
package wzu.mapper;

import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import wzu.pojo.Teacher;

import java.util.List;

public interface TeacherMapper {
    @Select("select * from teacher where TNO=124001")
    Teacher select_id();

    @Select("select * from teacher;")
    List<Teacher> select_all();

    @Select("select * from teacher where TITLES='讲师'")
    List<Teacher> select_L();

    @Insert("INSERT INTO teacher(TNO,TNAME,TITLES,PHONE) VALUES (#{TNO},#{TNAME},#{TITLES},#{PHONE})")
    void add(Teacher teacher);

    @Update("UPDATE `mybatis`.`teacher` SET `TITLES` = '副教授' WHERE (`TNO` = '121002');")
    void update();

    @Delete("DELETE FROM `mybatis`.`teacher` WHERE (`TNO` = '124001');")
    void delete();

}

 3、 核心配置文件mybatis-config.xml

<mappers>
    <mapper class="wzu.mapper.TeacherMapper"/>
</mappers>

没有Mapper.xml配置文件,直接把Mapper类搞过去

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--    引入database.properties文件-->
<!--    <properties resource="database.properties"/>-->
    <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/mybatis?serverTimezone=UTC"/>
<!--                useUnicode=true&characterEncoding=utf8&useSSL=false&-->
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
<!--    将mapper文件加入配置文件中-->
    <mappers>
        <mapper class="wzu.mapper.TeacherMapper"/>
    </mappers>
</configuration>

4、 测试类

//      调用getMapper(TeacherMapper.class)执行Mapper接口方法    
        TeacherMapper mapper = sqlSession.getMapper(TeacherMapper.class);

package wzu.test;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import wzu.mapper.TeacherMapper;
import wzu.pojo.Teacher;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class TeacherMapperTest {
    public static void main(String args[]) throws IOException{

        String resource= "mybatis-config.xml";
        InputStream is= Resources.getResourceAsStream(resource);
        SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(is);
        SqlSession sqlSession=factory.openSession();
//      调用getMapper(TeacherMapper.class)执行Mapper接口方法    !!!!!!!!!!!!!!
        TeacherMapper mapper = sqlSession.getMapper(TeacherMapper.class);
//(1)查询tno=“124001”的客户的记录;
        Teacher sel_id=mapper.select_id();
        System.out.println(sel_id.toString());
        System.out.println("");
//(2)查询全部教师记录;
        List<Teacher> sel_all=mapper.select_all();
        for (Teacher t_all : sel_all) {
            System.out.println(t_all.toString());
        }
//        版权声明:本文为CSDN博主「StudiousTiger」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
//        原文链接:https://blog.csdn.net/m0_45067620/article/details/118033802
        System.out.println("");
//(3)查询职称为讲师的教师记录;
        List<Teacher> sel_zhou=mapper.select_L();
        for (Teacher t_zhou : sel_zhou) {
            System.out.println(t_zhou.toString());
        }
        System.out.println("");
//(1)新增教师记录:(“210003”,“李志强”,“助教”,“18041304946”);
        mapper.add(new Teacher(210003, "李志强", "助教", "18041304946"));
        sqlSession.commit();
//      操作,需要提交!
//(2)修改教师记录:将工号为“121002”的教师教师职称改为“副教授”;
        mapper.update();
        sqlSession.commit();
//(3)删除工号为“124001”的教师记录;
        mapper.delete();
        sqlSession.commit();

        sqlSession.close();
    }
}

 第2次运行:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值