SpringBoot Maven SSM整合 demo(中)讲的是:SpringBoot整合SSM配置文件版。如果要进行crud操作,还要建个xxxMapper.xml配置文件。比较麻烦。
这里推荐使用SpringBoot整合SSM注解版,方法如下,我们回到第四步开始做起(回顾一下,有点区别):
4、eclipse导入Maven项目
先登录https://start.spring.io/生成基础Maven项目:
第6步把根包名称设置的简单点。
把生成的压缩包解压到你的工程项目文件下,然后用eclipse导入该项目(略,看前面文章SpringBoot Maven SSM整合 demo(上))。
5、配置数据库源
按下图目录结构创建文件
在application.properties文件里配置数据库源,内容如下:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://::1:3306/ssm_mybatis?serverTimezone=UTC&characterEncoding=utf-8&useSSL=true
spring.datasource.username=root
spring.datasource.password=root
6、用注解方式编写代码
创建实体类User.java,根据自己数据库的user表编写对应一样的属性名,生成get/set方法,和toString方法。(因为比较基础,代码略)。
创建dao层的Mapper接口类UserMapper.java:
package com.zzz.ssm.dao;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import com.zzz.ssm.entity.User;
@Mapper
public interface UserMapper {
@Select("select * from user")
List<User> findAll();
}
创建controller层测试类TestController.java:
package com.zzz.ssm.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.zzz.ssm.dao.UserMapper;
import com.zzz.ssm.entity.User;
@Controller
public class TestController {
@Autowired
private UserMapper userMapper;
@RequestMapping("/findAll")
public String findAll() {
List<User> userList = userMapper.findAll();
for (User user : userList) {
System.out.println(user);
}
return "xx";
}
}
7、运行测试
对根包com.zzz.ssm右键——》run as——》Java Application
程序运行成功后,控制台窗口会显示:
然后在浏览器中输入网址:http://localhost:8080/findAll
数据库user表中的内容就会打印在控制台窗口。
小结
用注解方式开发少了很多繁琐的配置过程。
扩展
其他数据库操作
UserMapper.java
/**
* @ClassName: UserMapper
* @Description:DAO层Mapper接口开发
* @author Administrator
* @date: 2022年3月22日 下午4:32:56
* @Copyright:
*/
@Mapper
public interface UserMapper {
@Select("select * from user")
List<User> findAll();
@Select("select * from user where u_id = #{id}")
User findUserById(int id);
//方法一、只能传入用户名和密码
// @Insert("insert into user(u_username,u_password) values(#{u_username},#{u_password})")
// void save(User user);
//方法二、可以处理多种情况:如果传入id可以指定id位置
//使用Provider根据传入的user实际参数进行"条件判断返回相应sql语句"
@InsertProvider(type = UserProvider.class,method = "saveUser")
void save(User user) throws Exception;
}
com.zzz.ssm.provider.UserProvider.java
/**
* @ClassName: UserProvider
* @Description:使用Provider根据传入的user实际参数进行"条件判断返回相应sql语句"
* @author Administrator
* @date: 2022年3月22日 下午4:36:32
* @Copyright:
*/
public class UserProvider {
public String saveUser(User user) {
if (user.getU_id()!=null) {
return "insert into user(u_id,u_username,u_password) values(#{u_id},#{u_username},#{u_password})";
}
else if(user.getU_username()!=null || user.getU_password()!=null){
return "insert into user(u_username,u_password) values(#{u_username},#{u_password})";
}
else {
//抛出无参数输入的异常
throw new RuntimeException("请输入id或用户名或密码,谢谢。");
}
}
}
TestController.java
@Controller
public class TestController {
@Autowired
private UserMapper userMapper;
@RequestMapping("/findAll")
public String findAll() {
List<User> userList = userMapper.findAll();
for (User user : userList) {
System.out.println(user);
}
return "xx";
}
@RequestMapping("/findUserById")
public String findUserById(int id) {
User user = userMapper.findUserById(id);
System.out.println(user);
return "";
}
@RequestMapping("/addUser")
public String addUser(User user) {
try {
userMapper.save(user);
} catch (Exception e) {
// TODO 捕捉"无user参数输入"的处理异常
System.out.println(e.getMessage());
}
return "";
}
}