当前位置:   article > 正文

springboot整合Mybatis,实现数据的增删改查_新建项目,用全注解方式完成springboot整合mybatis 实现对数据的增删改查功能,并用

新建项目,用全注解方式完成springboot整合mybatis 实现对数据的增删改查功能,并用

一、准备工作

1、mySql数据库

请自行下载好mySql数据库,并创建记录下用户名密码。
或者已知其他机器有可连接的mysql数据库。

2、确认mySql服务是否启动

右键“我的电脑/计算机”,选择 管理

å¨è¿éæå¥å¾çæè¿°

找到服务下的MySQL服务,确保是已经启动着的。
如果没有启动,需要右键-启动。

å¨è¿éæå¥å¾çæè¿°

3、连接数据库新建表与数据

我这里是用Navicate Premium连接的MySql数据库,当然也可以用别的。
如果连接不上,可能是MySql服务没启动成功。
新建表user,字段id,name,password,age,sex。

 

 

 

 二、配置mybatis


1、我这里是配置mybatis连接mySql数据库,用的也是spring的数据库连接池(你也可以用c3p0或者其他的)。
在第一部分的pom.xml基础上,新增mybatis和mySql的依赖。然后等待maven自动更新。
我本地是8.0版本的mySql,所以引入了8的jar包。

  1. <!-- mySql数据库依赖 -->
  2. <dependency>
  3. <groupId>mysql</groupId>
  4. <artifactId>mysql-connector-java</artifactId>
  5. <version>8.0.12</version>
  6. </dependency>
  7. <!--mybatis-->
  8. <dependency>
  9. <groupId>org.mybatis.spring.boot</groupId>
  10. <artifactId>mybatis-spring-boot-starter</artifactId>
  11. <version>1.1.1</version>
  12. </dependency>

2、在src/main/resources资源目录下新建文件夹mybatis,新建文件mybatis.cfg.xml。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
  3. <configuration>
  4. <!-- 开启二级缓存 -->
  5. <settings>
  6. <setting name="cacheEnabled" value="true"/>
  7. </settings>
  8. </configuration>

3、我选择的是application.yml作为配置文件,在application.yml中简单进行数据库连接配置和mybatis映射配置。
配置的是自己或者已知的mySql数据库的地址,用户名和密码。

8.0版本的mySql要加后面的这些东西。(
?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=false&rewriteBatchedStatements=true)

  1. server:
  2. port: 8080
  3. mybatis:
  4. config-location: "classpath:mybatis/mybatis.cfg.xml" # mybatis配置文件所在路径
  5. mapper-locations: "classpath:mybatis/mapper/**/*.xml" # mapper映射文件
  6. type-aliases-package: com.jzj.controller.entity # 别名类所在包
  7. spring:
  8. application:
  9. name: bootWeb #微服务的名字
  10. datasource:
  11. driver-class-name: com.mysql.cj.jdbc.Driver # mysql驱动包
  12. # 数据库名称
  13. url: jdbc:mysql://localhost:3306/sbactivity?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=false&rewriteBatchedStatements=true
  14. username: root # 数据库用户名
  15. password: root # 密码
  16. mvc: # 访问 .jsp页面
  17. view:
  18. prefix: /WEB-INF/jsp/ # 视图解析前缀
  19. suffix: .jsp # 视图后缀
  20. thymeleaf: # 访问 .html页面
  21. view:
  22. prefix: classpath:/templates/ # 视图解析前缀
  23. suffix: .html# 视图后缀

这里先启动下项目,查看项目是否报错。

三、代码编写

我们先把每种类型的文件分类建包,除了第一部分的controller,增加entity,service,impl,mapper(java),mapper(xml)文件夹。我的目录结构如下

1、在entity文件夹下新建User.java

  1. package com.chy.entity;
  2. public class User {
  3. private int id;
  4. private String name;
  5. private String password;
  6. private String age;
  7. private String sex;
  8. public int getId() {
  9. return id;
  10. }
  11. public void setId(int id) {
  12. this.id = id;
  13. }
  14. public String getName() {
  15. return name;
  16. }
  17. public void setName(String name) {
  18. this.name = name;
  19. }
  20. public String getPassword() {
  21. return password;
  22. }
  23. public void setPassword(String password) {
  24. this.password = password;
  25. }
  26. public String getAge() {
  27. return age;
  28. }
  29. public void setAge(String age) {
  30. this.age = age;
  31. }
  32. public String getSex() {
  33. return sex;
  34. }
  35. public void setSex(String sex) {
  36. this.sex = sex;
  37. }
  38. @Override
  39. public String toString() {
  40. return "User [id=" + id + ", name=" + name + ", password=" + password + ", age=" + age + ", sex=" + sex
  41. + "]";
  42. }
  43. }

2、在mapper(java)文件夹下UserMapper.java

  1. package com.chy.mapper;
  2. import java.util.List;
  3. import org.apache.ibatis.annotations.Mapper;
  4. import com.chy.entity.User;
  5. @Mapper
  6. public interface UserMapper {
  7. /**
  8. * 新增用户
  9. * @param user
  10. * @return
  11. */
  12. public boolean addUser(User user);
  13. /**
  14. * 删除用户
  15. * @param userName
  16. * @return
  17. */
  18. public boolean delUser(String userName);
  19. /**
  20. * 修改用户
  21. *@param user
  22. *@return
  23. * */
  24. public boolean updateUser(User user);
  25. /**
  26. * 单个查询
  27. * @param id
  28. * @return
  29. */
  30. public User getUser(int id);
  31. /**
  32. * 查询全部
  33. * @return
  34. */
  35. public List<User> getUsers();
  36. }

 3、在mapper(xml)文件夹下新建UserMapper.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="com.chy.mapper.UserMapper">
  4. <!-- 添加用户 -->
  5. <insert id="addUser" parameterType="com.chy.entity.User">
  6. insert into user(name, password, age, sex) values(#{name}, #{password}, #{age}, #{sex})
  7. </insert>
  8. <!-- 删除用户 -->
  9. <delete id="delUser" parameterType="String">
  10. delete from user WHERE name = #{name}
  11. </delete>
  12. <!-- 修改用户 -->
  13. <update id="updateUser" parameterType="com.chy.entity.User">
  14. update user set name = #{name}, password = #{password},
  15. age = #{age}, sex = #{sex} where id = #{id}
  16. </update>
  17. <!-- 根据主键查询用户 -->
  18. <select id="getUser" resultType="com.chy.entity.User" parameterType="int">
  19. select * from user where userId=#{id}
  20. </select>
  21. <!-- 查询全部数据 -->
  22. <select id="getUsers" resultType="com.chy.entity.User">
  23. select * from user
  24. </select>
  25. </mapper>

4、在service文件夹下新建UserService.java

  1. package com.chy.service;
  2. import java.util.List;
  3. import com.chy.entity.User;
  4. public interface UserService {
  5. // 添加数据
  6. public boolean addUser(User user);
  7. // 删除数据
  8. public boolean delUserByName(String userName);
  9. // 修改数据
  10. public boolean updateUserByUserId(User user);
  11. // 根据id查询数据
  12. public User getUser(int id);
  13. // 查询全部数据
  14. public List<User> getUsers();
  15. }

5、在impl文件夹下新建UserServiceImpl.java,用以继承UserService,并重写方法

 

不要漏了@Service注解

通过@Autowired注解注入刚才写的UserDao,以便调用SQL方法。

  1. package com.chy.impl;
  2. import java.util.List;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.stereotype.Service;
  5. import com.chy.entity.User;
  6. import com.chy.mapper.UserMapper;
  7. import com.chy.service.UserService;
  8. @Service
  9. public class UserServiceImpl implements UserService {
  10. @Autowired
  11. private UserMapper userMapper;
  12. /**
  13. * 添加用户
  14. * */
  15. @Override
  16. public boolean addUser(User user) {
  17. boolean flag;// 默认值是false
  18. flag = userMapper.addUser(user);
  19. return flag;
  20. }
  21. /**
  22. * 根据id删除用户
  23. * */
  24. @Override
  25. public boolean delUserByName(String userName) {
  26. boolean flag;// 默认值是false
  27. flag = userMapper.delUser(userName);
  28. return flag;
  29. }
  30. /**
  31. * 修改用戶
  32. * */
  33. @Override
  34. public boolean updateUserByUserId(User user) {
  35. boolean flag;// 默认值是fals
  36. flag = userMapper.updateUser(user);
  37. return flag;
  38. }
  39. /**
  40. * 根据id获取用户
  41. * */
  42. @Override
  43. public User getUser(int id) {
  44. User user = userMapper.getUser(id);
  45. return user;
  46. }
  47. /**
  48. * 查询全部数据
  49. * */
  50. @Override
  51. public List<User> getUsers() {
  52. List<User> users = userMapper.getUsers();
  53. return users;
  54. }
  55. }

6、在controller文件夹下新建UserController.java。

这里用@RestController 风格的controller,可以看做@Controller注解和@ResponseBody注解的合并,即返回具体数据。

通过@Autowired注解注入UserService,并调用其中的方法。

  1. package com.chy.controller;
  2. import java.util.List;
  3. import org.apache.ibatis.annotations.Param;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.stereotype.Controller;
  6. import org.springframework.web.bind.annotation.PathVariable;
  7. import org.springframework.web.bind.annotation.RequestBody;
  8. import org.springframework.web.bind.annotation.RequestMapping;
  9. import org.springframework.web.bind.annotation.RequestMethod;
  10. import org.springframework.web.bind.annotation.RequestParam;
  11. import org.springframework.web.bind.annotation.ResponseBody;
  12. import org.springframework.web.bind.annotation.RestController;
  13. import com.chy.entity.User;
  14. import com.chy.service.UserService;
  15. /**
  16. * 这里用rest风格的controller,
  17. * 可以看做@Controller注解和@ResponseBody注解的合并,
  18. * 即返回具体数据。
  19. * */
  20. //@RestController
  21. /**
  22. * @Controller 用来响应页面,@Controller必须配合模版来使用
  23. * */
  24. @Controller
  25. public class UserController {
  26. @Autowired
  27. private UserService service;
  28. /**
  29. * 访问.jsp页面
  30. * */
  31. @RequestMapping("/myJspPage")
  32. public String mainJspPage() {
  33. return "myJsp";
  34. }
  35. /**
  36. * 访问.html页面
  37. * */
  38. @RequestMapping("/myHtmlPage")
  39. public String mainHtmlPage() {
  40. return "myHtml";
  41. }
  42. /**
  43. * 新增用户
  44. * @param user
  45. * @return
  46. */
  47. @RequestMapping(value="/add", method=RequestMethod.POST)
  48. @ResponseBody
  49. public String addUser(User user){
  50. boolean flag = service.addUser(user);
  51. if (flag) {
  52. return "success";
  53. } else {
  54. return "faile";
  55. }
  56. }
  57. /**
  58. * 删除用户
  59. *
  60. * @param name
  61. * @return
  62. * */
  63. @RequestMapping(value="/del", method=RequestMethod.POST)
  64. @ResponseBody
  65. public String delUserByName(@RequestParam("name") String userName) {
  66. boolean flag = service.delUserByName(userName);
  67. if (flag) {
  68. return "success";
  69. } else {
  70. return "faile";
  71. }
  72. }
  73. /**
  74. * 修改用户
  75. *
  76. * @param User
  77. * @return
  78. * */
  79. @RequestMapping(value="/updata", method=RequestMethod.POST)
  80. @ResponseBody
  81. public String delUserByName(User user) {
  82. boolean flag = service.updateUserByUserId(user);
  83. if (flag) {
  84. return "success";
  85. } else {
  86. return "faile";
  87. }
  88. }
  89. /**
  90. * 单个查询
  91. * @param id
  92. * @return
  93. */
  94. @RequestMapping(value="/get/{id}", method=RequestMethod.GET)
  95. public User getUser(@PathVariable("id") int id){
  96. User user = service.getUser(id);
  97. return user;
  98. }
  99. /**
  100. * 查询全部
  101. * @return
  102. */
  103. @RequestMapping(value="/getUser/list", method=RequestMethod.GET)
  104. @ResponseBody // @ResponseBody - 返回json字符串
  105. public List<User> getUsers(){
  106. List<User> users = service.getUsers();
  107. return users;
  108. }
  109. }

 7、将SpringBootApplication.java这个启动类上的@ComponentScan配置扫描的报文改为上一级,以便扫描所有注解

  1. package com.chy;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
  4. import org.springframework.context.annotation.ComponentScan;
  5. @EnableAutoConfiguration
  6. @ComponentScan(value = {"com.chy"})
  7. public class SpringBootApplication {
  8. public static void main(String[] args) {
  9. SpringApplication.run(SpringBootApplication.class, args);
  10. }
  11. }

 或者使用@SpringBootApplication注解来启动

  1. package com.chy;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
  4. import org.springframework.context.annotation.ComponentScan;
  5. @org.springframework.boot.autoconfigure.SpringBootApplication
  6. public class SpringBootApplication {
  7. public static void main(String[] args) {
  8. SpringApplication.run(SpringBootApplication.class, args);
  9. }
  10. }

右键SpringBootApplication.java,Run As - Java Application,访问http://localhost:8080/getUser/list,成功获得数据库中的数据。

最后:访问jsp页面和html配置

注意:html和jsp两个依赖 同时引用,只能访问html页面,访问jsp页面报错(使用其中一种)

jsp页面访问配置

1、在pom.xml中添加依赖

  1. <!-- 访问jsp页面依赖 -->
  2. <dependency>
  3. <groupId>org.apache.tomcat.embed</groupId>
  4. <artifactId>tomcat-embed-jasper</artifactId>
  5. <scope>provided</scope>
  6. </dependency>
  7. <dependency>
  8. <groupId>javax.servlet</groupId>
  9. <artifactId>jstl</artifactId>
  10. </dependency>

2、application.yml设置路径

  1. mvc: # 访问 .jsp页面
  2. view:
  3. prefix: /WEB-INF/jsp/ # 视图解析前缀
  4. suffix: .jsp # 视图后缀

3、配置截图

启动程序即可。

html页面访问配置

1、pom.xml添加依赖

  1. <!--访问html页面 - thymeleaf依赖 -->
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-thymeleaf</artifactId>
  5. </dependency>

2、application.yml设置路径

  1. thymeleaf: # 访问 .html页面
  2. view:
  3. prefix: classpath:/templates/ # 视图解析前缀
  4. suffix: .html# 视图后缀

3、配置截图

启动程序即可。 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/232870
推荐阅读
相关标签
  

闽ICP备14008679号