注:本文基于上一篇IntelliJ IDEA搭建最簡(jiǎn)單的Spring MVC項(xiàng)目的基礎(chǔ)上進(jìn)行。
1 MySQL數(shù)據(jù)庫(kù)搭建
這個(gè)網(wǎng)上可以自己找到教程丹墨,我主要是搭建了一個(gè)user表肯污,里面只有三個(gè)字段册养,id亏吝、name抗俄、age炉抒,主鍵是id奢讨。
2 新建mvc目錄
在上一篇的基礎(chǔ)上,在com.cm下面新建dao目錄和model目錄焰薄。
同時(shí)在mvc-dispatcher.xml里面新增對(duì)dao目錄和model目錄的掃描拿诸。
<!--添加model和dao包掃描-->
<context:component-scan base-package="com.cm.model"/>
<context:component-scan base-package="com.cm.dao"/>
3 配置數(shù)據(jù)源與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">
<!--配置數(shù)據(jù)源-->
<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是數(shù)據(jù)庫(kù)名字亩码,配置的jdbc的一個(gè)實(shí)例。
4 新建表對(duì)應(yīng)的model類(lèi)野瘦。
在model目錄下新建UserModel.java描沟,與數(shù)據(jù)表user對(duì)應(yīng)飒泻。
package com.cm.model;
public class UserModel {
private int id;
private String name;
private int age;
//getter and setter
}
5 新建對(duì)應(yīng)的Dao類(lèi)。
首先提供數(shù)據(jù)庫(kù)對(duì)應(yīng)的增刪改查功能吏廉,新建UserDao.java的接口類(lèi)泞遗。
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);
}
添加對(duì)應(yīng)的實(shí)現(xiàn)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;
}
}
這里實(shí)現(xiàn)主要是展示了一下get方法,其他方法類(lèi)似席覆。需要說(shuō)明的是:
(1)@Repository("userDaoImpl") 它用于將數(shù)據(jù)訪問(wèn)層 (DAO 層 ) 的類(lèi)標(biāo)識(shí)為 Spring Bean史辙。具體只需將該注解標(biāo)注在 DAO類(lèi)上即可。
(2)@Resource(name = "myJdbc") 運(yùn)行時(shí)注入已經(jīng)配置好的bean佩伤,這里即前面配置的jdbc聊倔,名字為myJdbc。
6 新建對(duì)應(yīng)的Controller生巡。
新建一個(gè)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;
}
}
說(shuō)明:
(1)@RequestMapping 和 @Controller上一篇文章已經(jīng)說(shuō)過(guò)了
(2)@ResponseBody 表示直接把返回的東西打印出來(lái)耙蔑,而不返回視圖
(3)@Autowired
構(gòu)造函數(shù)的@Autowired 一個(gè)構(gòu)造函數(shù) @Autowired 說(shuō)明當(dāng)創(chuàng)建 bean 時(shí),即使在 XML 文件中沒(méi)有使用 元素配置 bean 障斋,構(gòu)造函數(shù)也會(huì)被自動(dòng)連接纵潦,即使用這個(gè)這構(gòu)造函數(shù)。
屬性中的 @Autowired 可以在屬性中使用 @Autowired 注解來(lái)除去 setter 方法垃环。
7 測(cè)試
在數(shù)據(jù)庫(kù)中插入三條數(shù)據(jù)邀层,然后運(yùn)行。在網(wǎng)址中輸入或者用postman提交 http://localhost:8080/user/getAllUsers遂庄。
結(jié)果如下圖:
【SSM框架從零開(kāi)始】系列文章鏈接:
IntelliJ IDEA搭建最簡(jiǎn)單的Spring MVC項(xiàng)目
IntelliJ IDEA下Spring MVC數(shù)據(jù)庫(kù)配置與增刪改查開(kāi)發(fā)
使用Mybatis-Generator自動(dòng)生成Dao寥院、Model層相關(guān)代碼
IntelliJ IDEA搭建SSM框架