让我来详细讲解Java中SSM框架实现增删改查功能代码的攻略,包括以下几个部分:
- SSM框架简介
- 数据库建表和配置文件
- DAO层代码示例
- Service层代码示例
- Controller层代码示例
1. SSM框架简介
SSM框架是指Spring+SpringMVC+MyBatis三个框架的整合,三个框架各自担任不同角色,共同完成项目的开发。其中,Spring框架负责管理整个项目中Bean对象的生命周期,提供IoC和AOP等功能;SpringMVC框架负责接收和处理请求,将结果响应给前台页面;MyBatis框架负责数据库的操作,使开发者可以使用简单的SQL语句进行数据库的访问。
2. 数据库建表和配置文件
首先,我们需要在数据库中建立数据表。例如,我们创建一个用户表,包含id、name、age、gender四个字段:
CREATE TABLE user(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20),
age INT,
gender VARCHAR(10)
);
然后,在MyBatis的配置文件mybatis-config.xml中配置数据库连接信息和mapper文件的路径:
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/example/dao/UserMapper.xml"/>
</mappers>
</configuration>
其中,需要配置数据库的连接信息,包括驱动名、url、用户名和密码,以及mapper文件的路径。
3. DAO层代码示例
接下来,我们需要编写DAO层代码,用于数据库的增删改查操作。例如,我们创建一个UserDao接口和对应的UserDaoImpl实现类:
UserDao.java
public interface UserDao {
User getUserById(Integer id);
List<User> getAllUser();
void insertUser(User user);
void updateUser(User user);
void deleteUser(Integer id);
}
UserDaoImpl.java
@Repository
public class UserDaoImpl implements UserDao {
@Autowired
private SqlSessionFactory sqlSessionFactory;
@Override
public User getUserById(Integer id) {
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
return sqlSession.selectOne("com.example.dao.UserMapper.getUserById", id);
}
}
@Override
public List<User> getAllUser() {
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
return sqlSession.selectList("com.example.dao.UserMapper.getAllUser");
}
}
@Override
public void insertUser(User user) {
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
sqlSession.insert("com.example.dao.UserMapper.insertUser", user);
sqlSession.commit();
}
}
@Override
public void updateUser(User user) {
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
sqlSession.update("com.example.dao.UserMapper.updateUser", user);
sqlSession.commit();
}
}
@Override
public void deleteUser(Integer id) {
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
sqlSession.delete("com.example.dao.UserMapper.deleteUser", id);
sqlSession.commit();
}
}
}
在UserDaoImpl中注入了SqlSessionFactory对象,用于获取SqlSession对象。每个方法需要打开SqlSession对象进行数据库的操作,之后需要关闭SqlSession对象,并在增删改操作之后进行commit操作,保证数据库操作的完整性。
4. Service层代码示例
在DAO层的基础上,我们需要编写Service层代码,实现具体的业务逻辑。例如,我们创建一个UserService接口和对应的UserServiceImpl实现类:
UserService.java
public interface UserService {
User getUserById(Integer id);
List<User> getAllUser();
void addUser(User user);
void updateUser(User user);
void deleteUser(Integer id);
}
UserServiceImpl.java
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Override
public User getUserById(Integer id) {
return userDao.getUserById(id);
}
@Override
public List<User> getAllUser() {
return userDao.getAllUser();
}
@Override
public void addUser(User user) {
userDao.insertUser(user);
}
@Override
public void updateUser(User user) {
userDao.updateUser(user);
}
@Override
public void deleteUser(Integer id) {
userDao.deleteUser(id);
}
}
在UserServiceImpl中注入了UserDao对象,用于完成数据库的操作。每个方法需要调用对应的UserDao方法,将结果返回给Controller层。
5. Controller层代码示例
最后,在Service层的基础上,我们需要编写Controller层代码,接收并处理前端页面的请求,将结果返回给浏览器。例如,我们创建一个UserController类,用于处理用户请求,并将结果返回给页面:
@RestController
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/user/{id}")
public User getUserById(@PathVariable Integer id) {
return userService.getUserById(id);
}
@GetMapping("/user")
public List<User> getAllUser() {
return userService.getAllUser();
}
@PostMapping("/user")
public void addUser(@RequestBody User user) {
userService.addUser(user);
}
@PutMapping("/user")
public void updateUser(@RequestBody User user) {
userService.updateUser(user);
}
@DeleteMapping("/user/{id}")
public void deleteUser(@PathVariable Integer id) {
userService.deleteUser(id);
}
}
在UserController中注入了UserService对象,用于完成具体的业务逻辑。每个方法使用不同的HTTP方法,例如GET、POST、PUT、DELETE等,对应不同的数据库操作。使用@PathVariable和@RequestBody注解,接收前端页面传递的参数,并将结果返回给前端页面。
至此,我们已经完成了Java中SSM框架实现增删改查功能代码的攻略。
下面是两个示例代码:
1、插入一条用户信息
前端页面传递过来的请求参数:
{
"id": 1,
"name": "Tom",
"age": 18,
"gender": "male"
}
UserController中对应的代码:
@PostMapping("/user")
public void addUser(@RequestBody User user) {
userService.addUser(user);
}
UserService中对应的代码:
@Override
public void addUser(User user) {
userDao.insertUser(user);
}
UserDao中对应的代码:
@Override
public void insertUser(User user) {
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
sqlSession.insert("com.example.dao.UserMapper.insertUser", user);
sqlSession.commit();
}
}
2、查询所有用户信息
UserController中对应的代码:
@GetMapping("/user")
public List<User> getAllUser() {
return userService.getAllUser();
}
UserService中对应的代码:
@Override
public List<User> getAllUser() {
return userDao.getAllUser();
}
UserDao中对应的代码:
@Override
public List<User> getAllUser() {
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
return sqlSession.selectList("com.example.dao.UserMapper.getAllUser");
}
}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中SSM框架实现增删改查功能代码详解 - Python技术站