MyBatis注解开发
介绍
常用注解
@Select(“查询的 SQL 语句”):执行查询操作注解
@Insert(“新增的 SQL 语句”):执行新增操作注解
@Update(“修改的 SQL 语句”):执行修改操作注解
@Delete(“删除的SQL 语句”):执行删除操作注解
注解实现"增删改查"操作
- 创建接口和查询方法
- 在核心配置文件中配置映射关系
- 编写测试类
StudentMapper.java
public interface StudentMapper {
//查询全部
@Select("SELECT * FROM student")
public abstract List<Student> selectAll();
//新增操作
@Insert("INSERT INTO student VALUES (#{id},#{name},#{age})")
public abstract Integer insert(Student stu);
//修改操作
@Update("UPDATE student SET name=#{name},age=#{age} WHERE id=#{id}")
public abstract Integer update(Student stu);
//删除操作
@Delete("DELETE FROM student WHERE id=#{id}")
public abstract Integer delete(Integer id);
}
MyBatisConfig.xml
<configuration>
<!--注解实现、配置映射关系-->
<mappers>
<package name="com.itheima.mapper"/>
<!-- 也可以配置的范围大一点 com下所有 -->
<!-- <package name="com"/> -->
</mappers>
</configuration>
小结
常用注解
@Select(“查询的 SQL 语句”):执行查询操作注解
@Insert(“查询的 SQL 语句”):执行新增操作注解
@Update(“查询的 SQL 语句”):执行修改操作注解
@Delete(“查询的SQL 语句”):执行删除操作注解
配置映射关系
MyBatis注解实现多表操作
一对一
推荐vo
public interface CardMapper {
/*方式二 查询全部 */
@Select("SELECT
c.id AS cid,
c.number,
c.pid,
p.`name`,
p.age
FROM
card c,person p
WHERE
c.pid=p.id
")
public abstract List<PersonCardVo> selectAllZls();
}
创建Javabean
public class PersonCardVo {
private Integer pid; //人表主键id
private String name; //人的姓名
private Integer age; //人的年龄
private Integer cid; //身份证号表主键
private String number; //身份证号
}
一对多
public interface ClassesMapper {
//查询全部
@Select("SELECT
"
+ "
c.id AS cid,
c.name AS cname,
s.id AS sid,
s.name AS sname,
s.age AS sage
"
+ " FROM
"
+ " classes AS c,student AS s
"
+ " WHERE
"
+ " c.id=s.cid")
public abstract List<ClassesStudentVo> selectAllZls();
}
创建vo对象
public class ClassesStudentVo {
private Integer cid; //班级的主键id
private String cname; //班级名称
private Integer sid; //学生的主键id
private String sname; //学生姓名
private Integer sage; //学生年龄
}
使用
//4.获取ClassesMapper接口的实现类对象
ClassesMapper mapper = sqlSession.getMapper(ClassesMapper.class);
//5.调用实现类对象中的方法,接收结果
List<ClassesStudentVo> list = mapper.selectAllZls();
//6.处理结果
for (ClassesStudentVo classesStudentVo : list) {
System.out.println(classesStudentVo);
}
多对多
public interface StudentMapper {
/*方式二 查询全部*/
@Select("SELECT
"
+ " sc.sid, s.name sname, s.age sage, c.`id` cid, c.name cname
"
+ " FROM
"
+ " student s, course c, stu_cr sc
"
+ " WHERE
"
+ " sc.sid=s.id AND sc.cid=c.id")
public abstract List<StudentCourseVo> selectAllZls();
}
vo对象
public class StudentCourseVo {
private Integer sid; //学生的主键id
private String sname; //学生姓名
private Integer sage; //学生年龄
private Integer cid; //课程的主键id
private String cname; //课程名称
}