1启动mysql数据库创建两张表 电影表、电影分类表10分2在mysql中手工录入分类表中的数据10分3创建WEB项目导入必要jar包10分4完成列表模块功能按照名称模糊查询10分5完成添加模块功能10分6使用ajax验证电影名称的唯一性10分7完成修改模块功能10分8完成删除模块功能10分9在添加与修改页面中下拉框显示所属分类其中数据从分类表中获取10分10代码规范及注释10分使用mybatis
- 创建电影表和电影分类表的SQL语句如下:
CREATE TABLE movie (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
category_id INT NOT NULL,
release_date DATE,
duration INT,
director VARCHAR(100),
description TEXT
);
CREATE TABLE category (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL
);
- 手工录入分类表的数据:
INSERT INTO category (name) VALUES ('动作');
INSERT INTO category (name) VALUES ('喜剧');
INSERT INTO category (name) VALUES ('爱情');
INSERT INTO category (name) VALUES ('科幻');
INSERT INTO category (name) VALUES ('恐怖');
-
创建WEB项目,导入必要的jar包,包括但不限于:mybatis、mysql-connector-java、servlet-api等。
-
列表模块功能的实现,按照名称模糊查询,可以使用mybatis的动态SQL来实现:
public List<Movie> searchMoviesByName(String keyword) {
SqlSession session = sessionFactory.openSession();
try {
MovieMapper mapper = session.getMapper(MovieMapper.class);
return mapper.searchMoviesByName(keyword);
} finally {
session.close();
}
}
<!-- MovieMapper.xml -->
<select id="searchMoviesByName" parameterType="String" resultType="Movie">
SELECT * FROM movie WHERE name LIKE CONCAT('%', #{keyword}, '%')
</select>
- 添加模块功能的实现,可以使用mybatis的insert语句:
public void addMovie(Movie movie) {
SqlSession session = sessionFactory.openSession();
try {
MovieMapper mapper = session.getMapper(MovieMapper.class);
mapper.addMovie(movie);
session.commit();
} finally {
session.close();
}
}
<!-- MovieMapper.xml -->
<insert id="addMovie" parameterType="Movie">
INSERT INTO movie (name, category_id, release_date, duration, director, description)
VALUES (#{name}, #{categoryId}, #{releaseDate}, #{duration}, #{director}, #{description})
</insert>
- 使用ajax验证电影名称的唯一性,可以编写一个Servlet来处理异步请求:
@WebServlet("/checkMovieName")
public class CheckMovieNameServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("name");
SqlSession session = sessionFactory.openSession();
try {
MovieMapper mapper = session.getMapper(MovieMapper.class);
Movie movie = mapper.getMovieByName(name);
if (movie != null) {
response.getWriter().write("false");
} else {
response.getWriter().write("true");
}
} finally {
session.close();
}
}
}
// 前端代码
$.ajax({
url: "/checkMovieName",
type: "GET",
data: {name: movieName},
success: function(result) {
if (result === "true") {
// 电影名称可用
} else {
// 电影名称已存在
}
}
});
- 修改模块功能的实现,可以使用mybatis的update语句:
public void updateMovie(Movie movie) {
SqlSession session = sessionFactory.openSession();
try {
MovieMapper mapper = session.getMapper(MovieMapper.class);
mapper.updateMovie(movie);
session.commit();
} finally {
session.close();
}
}
<!-- MovieMapper.xml -->
<update id="updateMovie" parameterType="Movie">
UPDATE movie SET name = #{name}, category_id = #{categoryId}, release_date = #{releaseDate},
duration = #{duration}, director = #{director}, description = #{description}
WHERE id = #{id}
</update>
- 删除模块功能的实现,可以使用mybatis的delete语句:
public void deleteMovie(int id) {
SqlSession session = sessionFactory.openSession();
try {
MovieMapper mapper = session.getMapper(MovieMapper.class);
mapper.deleteMovie(id);
session.commit();
} finally {
session.close();
}
}
<!-- MovieMapper.xml -->
<delete id="deleteMovie" parameterType="int">
DELETE FROM movie WHERE id = #{id}
</delete>
- 在添加与修改页面中,下拉框显示所属分类,可以通过查询分类表获取数据:
public List<Category> getAllCategories() {
SqlSession session = sessionFactory.openSession();
try {
CategoryMapper mapper = session.getMapper(CategoryMapper.class);
return mapper.getAllCategories();
} finally {
session.close();
}
}
<!-- CategoryMapper.xml -->
<select id="getAllCategories" resultType="Category">
SELECT * FROM category
</select>
- 代码规范及注释:
- 代码应符合Java命名规范,类名使用驼峰命名法,方法名使用小驼峰命名法,变量名尽量具有描述性。
- 适当添加注释,解释代码的功能、参数、返回值等。
- 使用合适的缩进和空格,使代码易读
原文地址: http://www.cveoy.top/t/topic/in0S 著作权归作者所有。请勿转载和采集!