注:本文基于上一篇IntelliJ IDEA搭建最简单的Spring MVC项目的基础上进行。
1 MySQL数据库搭建
这个网上可以自己找到教程,我主要是搭建了一个user表,里面只有三个字段,id、name、age,主键是id。
2 新建mvc目录
在上一篇的基础上,在com.cm下面新建dao目录和model目录。
同时在mvc-dispatcher.xml里面新增对dao目录和model目录的扫描。
<!--添加model和dao包扫描-->
<context:component-scan base-package="com.cm.model"/>
<context:component-scan base-package="com.cm.dao"/>
3 配置数据源与jdbc
修改applicationContext.xml。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--配置数据源-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/cmtable?useUnicode=true&characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</bean>
<!--jdbc-->
<bean id="myJdbc" class="org.springframework.jdbc.core.JdbcTemplate">
<constructor-arg ref="dataSource"/>
</bean>
</beans>
如上,url里面的cmtable是数据库名字,配置的jdbc的一个实例。
4 新建表对应的model类。
在model目录下新建UserModel.java,与数据表user对应。
package com.cm.model;
public class UserModel {
private int id;
private String name;
private int age;
//getter and setter
}
5 新建对应的Dao类。
首先提供数据库对应的增删改查功能,新建UserDao.java的接口类。
package com.cm.dao;
import com.cm.model.UserModel;
import java.util.List;
public interface UserDao {
List<UserModel> getAllUsers();
UserModel getUser(String id);
boolean addUser(UserModel userModel);
boolean updateUser(String id, String name);
boolean deleteUser(String id);
}
添加对应的实现UserDaoImpl.java
package com.cm.dao;
import com.cm.model.UserModel;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowCallbackHandler;
import org.springframework.stereotype.Repository;
import javax.annotation.Resource;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
@Repository("userDaoImpl")
public class UserDaoImpl implements UserDao {
@Resource(name = "myJdbc")
private JdbcTemplate myJdbc;
@Override
public List<UserModel> getAllUsers() {
String sql = "select * from user";
return query(sql);
}
@Override
public UserModel getUser(String id) {
return null;
}
@Override
public boolean addUser(UserModel userModel) {
return false;
}
@Override
public boolean updateUser(String id, String name) {
return false;
}
@Override
public boolean deleteUser(String id) {
return false;
}
private List<UserModel> query(String sql) {
final List<UserModel> userModels = new ArrayList<>();
myJdbc.query(sql, new RowCallbackHandler() {
@Override
public void processRow(ResultSet resultSet) throws SQLException {
int id = resultSet.getInt(1);
String name = resultSet.getString(2);
int age = resultSet.getInt(3);
UserModel userModel = new UserModel(id, name, age);
userModels.add(userModel);
}
});
return userModels;
}
}
这里实现主要是展示了一下get方法,其他方法类似。需要说明的是:
(1)@Repository("userDaoImpl") 它用于将数据访问层 (DAO 层 ) 的类标识为 Spring Bean。具体只需将该注解标注在 DAO类上即可。
(2)@Resource(name = "myJdbc") 运行时注入已经配置好的bean,这里即前面配置的jdbc,名字为myJdbc。
6 新建对应的Controller。
新建一个UserController.java
package com.cm.controller;
import com.cm.dao.UserDao;
import com.cm.model.UserModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
@Controller
@RequestMapping("user")
public class UserController {
private UserDao userDao;
@Autowired
UserController (UserDao userDao){
this.userDao = userDao;
}
@RequestMapping("getAllUsers")
@ResponseBody
public List<UserModel> getAllUsers() {
List<UserModel> userModels = userDao.getAllUsers();
return userModels;
}
}
说明:
(1)@RequestMapping 和 @Controller上一篇文章已经说过了
(2)@ResponseBody 表示直接把返回的东西打印出来,而不返回视图
(3)@Autowired
构造函数的@Autowired 一个构造函数 @Autowired 说明当创建 bean 时,即使在 XML 文件中没有使用 元素配置 bean ,构造函数也会被自动连接,即使用这个这构造函数。
属性中的 @Autowired 可以在属性中使用 @Autowired 注解来除去 setter 方法。
7 测试
在数据库中插入三条数据,然后运行。在网址中输入或者用postman提交 http://localhost:8080/user/getAllUsers。
结果如下图:
【SSM框架从零开始】系列文章链接:
IntelliJ IDEA搭建最简单的Spring MVC项目
IntelliJ IDEA下Spring MVC数据库配置与增删改查开发
使用Mybatis-Generator自动生成Dao、Model层相关代码
IntelliJ IDEA搭建SSM框架