一、创建SpringBoot项目
1、网页创建项目
创建SpringBoot的网址是 https://start.spring.io/
打开网址按照图选择配置好项目,然后点击下面的
GENERATE
按钮生成项目
2、项目目录如下
![图片描述](https://i-blog.csdnimg.cn/blog_migrate/1c827022303a5fc9befdfcb58dc68a2c.png)
二、修改配置文件
修改该配置文件application.properties后缀名为yml。即application.yml
将下面的内容粘贴进去,按照自己创建的环境修改路径、数据库名称等。
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false&serverTimezone=UTC
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: 123456
mybatis:
mapper-locations: classpath:mapping/*.xml
type-aliases-package: com.example.SpringBootdemo.bean
这里需要注意两个问题
- 属性和属性值之间需要添加空格(例如url和后面的jdbc:xxxxx之间需要添加空格)
- 层与层之间有缩进(即datasource和spring之间有缩进,url和datasource之间也有缩进)
三、前端代码
1、HTML
1.1、viewUser.html
xmlns:th="http://www.thymeleaf.org"
表示使用thymeleaf模板引擎
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="css/viewUser.css">
</head>
<body>
<table>
<tr>
<th>ID</th>
<th>用户名</th>
<th>密码</th>
</tr>
<tr th:each="user,userStat : ${userList}">
<td th:text="${user.userId}"></td>
<td th:text="${user.userName}"></td>
<td th:text="${user.password}"></td>
<td>
<a th:href="@{'user/deleteUser?'+${user.userId}}">删除</a>
</td>
</tr>
</table>
</body>
</html>
2、CSS
2.1、viewUser.css
table, tr, td, th,tbody,thead {
border-collapse: collapse; /*双边框合并为单边框*/
border: 1px solid black;
}
四、后端代码
1、编写bean类
1.1、User.java
这里的User类的字段最好和数据库的一致,如果不一致后面需要做其他设置(总结会讲解决办法),我这里和数据库中字段保持一致。(注:mysql数据库字段不区分大小写)
public class User {
private String user_Id;
private String userName;
private String password;
//setter方法和getter方法省略了,需要自己添加
}
1.2、数据库信息如图
2、编写controller类
2.1、UserController.java
@GetMapping 配合@RequestMapping使用,当HTTP GET request是 /user 时,UserController会被触发,当HTTP GET request是 /user/viewUser 时,getAllUser() 才会被触发
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private IUserService userService;
@GetMapping("viewUser")
public String getAllUser(HttpServletRequest request){
request.setAttribute("userList",userService.getAllUser());
return "viewUser";
}
}
3、编写service类
3.1、写service接口
3.1.1、IUserService.java
public interface IUserService {
List<User> getAllUser();
}
3.2、service实现类
3.2.1、UserServiceImpl.java
使用了@Service注解,会将类自动注册到Spring容器,不需要再在applicationContext里面定义bean了。
@Service
public class UserServiceImpl implements IUserService {
@Autowired
private UserMapper userMapper;
@Override
public List<User> getAllUser() {
return userMapper.getAllUser();
}
}
4、创建Mapper接口
4.1、UserMapper.java
使用@Mapper注解后,可以通过mapper.xml里面的namespace属性对应相关的mapper类,spring将动态的生成Bean后注入到ServiceImpl中
@Mapper
public interface UserMapper {
List<User> getAllUser();
}
五、MyBatis配置文件
1、usermapping.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.SpringBootdemo.mapper.UserMapper">
<select id="getAllUser" resultType="user">
select * from users
</select>
</mapper>
六、运行
1、idea运行项目
运行xxxxApplication.java
2、打开网页
打开网页输入网址 localhost:8080/user/viewUser
如果 application.yml 文件中 port设置的值是其他的则根据自己修改该的内容输入网址。
3、结果
七、总结
1、bean类中的字段和数据库中的字段一致
bean类中的字段和数据库中的字段一致,则不需要做任何修改。usermapping.xml
的SQL语句直接查询即可。
2、bean类中的字段和数据库中的字段不一致
有两种方法解决:
- MyBatis配置文件中的SQL语句使用别名,别名需要和bean类中对应的字段一致。
- MyBatis配置文件中中使用ResultMap结果集映射
2.1、SQL语句使用别名
如果User.java代码如下:
public class User {
private String userId;
private String userName;
private String password;
}
//userId字段和数据库中的不一致,其余一致
则需要修改 usermapping.xml
中的SQL语句为
select user_id as userid,username,password from users
2.2、使用ResultMap结果集映射
不需要修改bean类,需要修改MyBatis配置文件,即
usermapping.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.SpringBootdemo.mapper.UserMapper">
<resultMap id="userMap" type="user">
<!-- property对应User类中的属性, column对英数据库中的字段 -->
<result property="userId" column="user_id"></result>
<result property="userName" column="username"></result>
<result property="password" column="password"></result>
</resultMap>
<!-- resultType改为resultMap,值是上面 resultMap的id值 -->
<select id="getAllUser" resultMap="userMap">
select * from users
</select>
</mapper>