这是JavaEE课设连载的第二篇,上一篇在这里:【从零开始JavaEE课设】《影院系统》(一) 需求分析 数据库设计 后端model类
上一篇分析了项目所需的数据库表和基础的model类。这一篇,就来创建久层的Mapper接口,预先设定一些可能会用到的crud。完成后,我们就用mybatis完成sql的编写和ORM映射。
有兴趣观看下去的朋友,墙裂推荐去上一篇博客了解一下项目需求。实在不行,收藏一下先?
根据上一节设计六个的model类:
以及项目需求,共设计了六个Mapper接口。内置一些CRUD方法的原型。等待后面使用mybatis代理。
这些接口中的方法不是不变的,开发的过程中,如果遇到了新的需求需要用到新的sql,那么还是得回来修修补补 (甚至回来把某个接口给它扬了也说不定)
#{value}
#{属性名}
@Param
注解进行映射,取值时使用#{映射名}
map
对象,这个操作有些费劲,博主就不用了嗷。map
,但是在mapper文件中只能使用#{param1},#{param2}...
等访问package com.none.mapper;
import com.none.model.Room;
import java.util.List;
public interface RoomMapper {
/*新增一个房间*/
public void insertRoom(Room room);
/*更新一个房间*/
public void updateRoom(Room room);
/*删除一个房间*/
public void deleteById(int id);
/*获取所有房间*/
public List<Room> selectAll();
/*根据名称获取房间*/
public List<Room> selectByName(String name);
/*根据房间类型获取房间*/
public List<Room> selectByType(String type);
}
package com.none.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.none.model.Film;
public interface FilmMapper {
/*根据名称选择电影*/
public List<Film> selectByName(String name);
/*获取上映的电影(获取所有可放映的电影)*/
public List<Film> selectOnLine(String timeNow);
/*获取某国家的电影*/
public List<Film> selectByCountry(String country);
/*获取某日有放映计划的电影,超过当日时间的不要*/
public List<Film> selectFilmPlaned(@Param("date")String date,@Param("time")String time);
/*统计时间段内电影票房排名(前k名)*/
public List<Film> selectTopK(@Param("begin") String begin,@Param("end") String end,int k);
/*插入一个新的电影*/
public void insertFilm(Film film);
/*根据id删除一个电影*/
public void deleteById(int id);
/*修改一个电影*/
public void updateFilm(Film film);
}
package com.none.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.none.model.Film;
import com.none.model.ScreeningPlan;
public interface ScreeningPlanMapper {
/*添加一个放映计划*/
public void insertPlan(ScreeningPlan plan);
/*更新一个放映计划*/
public void updatePlan(ScreeningPlan plan);
/*删除一个放映计划*/
public void deleteById(int id);
/*查询即将放映的电影(time时间内)*/
public List<ScreeningPlan> selectNearby(@Param("nowTime") String nowTime,@Param("endTime") String endTime,@Param("nowDate") String nowDate,@Param("endDate") String endDate);
/*查询某电影在某日剩余的放映计划*/
public List<ScreeningPlan> selectPlans(@Param("film")Film film,@Param("date")String date,@Param("time")String time);
}
购票记录承载着统计等若干功能的实现,因此它的方法可能会多一些
package com.none.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.none.model.Film;
import com.none.model.Record;
import com.none.model.Room;
public interface RecordMapper {
/*新增一条记录*/
public void insertRecord(Record record);
/*根据ID删除一条记录*/
public void deleteById(int id);
/*更新一条记录(很可能不会用上)*/
public void updateRecord(Record record);
/*查询所有记录*/
public List<Record> selectAll();
/*根据用户查询所有数据*/
public List<Record> selectByphone(String phone);
/*查询一段时间内的记录*/
public List<Record> selectByTime(@Param("begin") String begin,@Param("end") String end);
/*查询影片记录*/
public List<Record> selectByFilms(@Param("films") List<Film> films);
/*查询某影厅的记录*/
public List<Record> selectByRooms(@Param("rooms") List<Room> rooms);
/*根据影厅影片查询*/
public List<Record> selectByRoomsAndFilms(@Param("rooms") List<Room> rooms,@Param("films")List<Film> films);
}
员工类设计偷个懒,仅用于登录校验
package com.none.mapper;
import com.none.model.Staff;
public interface StaffMapper {
/*查询一个员工,用于登录校验*/
public Staff selectByIdCard(String idCard);
}
vip主要业务需求是办理、登录、修改、注销
package com.none.mapper;
import com.none.model.Vip;
public interface VipMapper {
/*通过身份证号、电话号码、会员卡号获得Vip*/
public void selectVip(String code);
/*新加一个Vip*/
public void insertVip(Vip vip);
/*更新一个Vip*/
public void updateVip(Vip vip);
/*删除一个Vip*/
public void deleteById(int id);
}
海报类主要聚合在电影类中,但是由于需要对海报进行简单的添加删除操作,所以还是映射一个海报类
package com.none.mapper;
import com.none.model.FilmPost;
public interface FilmPostMapper {
/*插入一个海报*/
public void insertPost(FilmPost post);
/*根据Id删除一个海报*/
public void deleteById(int id);
}
OK,基本的mapper配置完辽,后面就该搭建mybatis框架,编写SQL了。
续集火速赶制中~~
20.6.24更新:新增了海报类的mapper