一、利用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次运行;
- 新增教师记录:(“210002”,“王强”,“高级实验师”,“18041314946”);已完成。
- 修改教师记录:将工号为“121004”的教师教师姓名改为“李刚”。已完成。
- 删除工号为“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次运行: