我认为,本次实验主要是对SSM框架进行CRUD操作的练习。
一、导入项目
我参考Spring+Sping MVC + Mybatis 三大框架整合详细步骤中的说明,导入一个已经成功运行的SSM框架项目。
二、对product_表的操作
- 创建Product实体类
public class Product {
private int id;
private String name;
private float price;
private int stock;
}
2.创建ProductMapper接口
public interface ProductMapper {
List<Product> findAll();
void insert(Product product);
void update(Product product);
void delete(int id);
}
3.创建ProductMapper.xml文件
<mapper namespace="com.example.mapper.ProductMapper">
<select id="findAll" resultType="com.example.entity.Product">
SELECT * FROM product_
</select>
<insert id="insert">
INSERT INTO product_(name, price, stock) VALUES(#{name}, #{price}, #{stock})
</insert>
<update id="update">
UPDATE product_ SET name=#{name}, price=#{price}, stock=#{stock} WHERE id=#{id}
</update>
<delete id="delete">
DELETE FROM product_ WHERE id=#{id}
</delete>
</mapper>
4.创建ProductService接口和实现类
public interface ProductService {
List<Product> findAll();
void insert(Product product);
void update(Product product);
void delete(int id);
}
@Service
public class ProductServiceImpl implements ProductService {
@Autowired
private ProductMapper productMapper;
@Override
public List<Product> findAll() {
return productMapper.findAll();
}
@Override
public void insert(Product product) {
productMapper.insert(product);
}
@Override
public void update(Product product) {
productMapper.update(product);
}
@Override
public void delete(int id) {
productMapper.delete(id);
}
}
5.创建ProductController类
@Controller
@RequestMapping("/product")
public class ProductController {
@Autowired
private ProductService productService;
@RequestMapping("/list")
public String list(Model model) {
List<Product> productList = productService.findAll();
model.addAttribute("productList", productList);
return "product/list";
}
@RequestMapping(value = "/add", method = RequestMethod.GET)
public String add() {
return "product/add";
}
@RequestMapping(value = "/add", method = RequestMethod.POST)
public String add(Product product) {
productService.insert(product);
return "redirect:/product/list";
}
@RequestMapping(value = "/edit/{id}", method = RequestMethod.GET)
public String edit(@PathVariable int id, Model model) {
Product product = productService.findById(id);
model.addAttribute("product", product);
return "product/edit";
}
@RequestMapping(value = "/edit", method = RequestMethod.POST)
public String edit(Product product) {
productService.update(product);
return "redirect:/product/list";
}
@RequestMapping(value = "/delete/{id}", method = RequestMethod.GET)
public String delete(@PathVariable int id) {
productService.delete(id);
return "redirect:/product/list";
}
}
6.创建对应的页面文件:在 WEB-INF/views/product 目录下,分别创建 list.jsp、add.jsp 和 edit.jsp 文件,并按照需求进行编写。
7.运行测试:启动服务器,访问页面即可查看列表信息,点击相应的按钮可以添加、修改和删除 product 信息。
三、对Users表的操作(感觉与上面步骤相似)
创建User实体类
public class User {
private int id;
private String name;
private String password;
private Date createTime;
private Date updateTime;
// 省略getter和setter方法
}
创建UserMapper接口
public interface UserMapper {
List<User> findAll();
User findById(int id);
void insert(User user);
void update(User user);
void delete(int id);
}
创建UserMapper.xml文件
<mapper namespace="com.example.mapper.UserMapper">
<select id="findAll" resultType="com.example.entity.User">
SELECT * FROM users
</select>
<select id="findById" resultType="com.example.entity.User">
SELECT * FROM users WHERE id=#{id}
</select>
<insert id="insert">
INSERT INTO users(name, password, create_time, update_time) VALUES(#{name}, #{password}, #{createTime}, #{updateTime})
</insert>
<update id="update">
UPDATE users SET name=#{name}, password=#{password}, create_time=#{createTime}, update_time=#{updateTime} WHERE id=#{id}
</update>
<delete id="delete">
DELETE FROM users WHERE id=#{id}
</delete>
</mapper>
创建UserService接口和实现类
public interface UserService {
List<User> findAll();
User findById(int id);
void insert(User user);
void update(User user);
void delete(int id);
}
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public List<User> findAll() {
return userMapper.findAll();
}
@Override
public User findById(int id) {
return userMapper.findById(id);
}
@Override
public void insert(User user) {
userMapper.insert(user);
}
@Override
public void update(User user) {
userMapper.update(user);
}
@Override
public void delete(int id) {
userMapper.delete(id);
}
}
创建UserController类
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/list")
public String list(Model model) {
List<User> userList = userService.findAll();
model.addAttribute("userList", userList);
return "user/list";
}
@RequestMapping(value = "/add", method = RequestMethod.GET)
public String add() {
return "user/add";
}
@RequestMapping(value = "/add", method = RequestMethod.POST)
public String add(User user) {
userService.insert(user);
return "redirect:/user/list";
}
@RequestMapping(value = "/edit/{id}", method = RequestMethod.GET)
public String edit(@PathVariable int id, Model model) {
User user = userService.findById(id);
model.addAttribute("user", user);
return "user/edit";
}
@RequestMapping(value = "/edit", method = RequestMethod.POST)
public String edit(User user) {
userService.update(user);
return "redirect:/user/list";
}
@RequestMapping(value = "/delete/{id}", method = RequestMethod.GET)
public String delete(@PathVariable int id) {
userService.delete(id);
return "redirect:/user/list";
}
}
创建对应的页面文件:在 WEB-INF/views/user 目录下,分别创建 list.jsp、add.jsp 和 edit.jsp 文件,并按照需求进行编写。
运行测试:启动服务器,访问 http://localhost:8080/xxx/user/list 页面即可查看列表信息,点击相应的按钮可以添加、修改和删除 user 信息。
最终结果;