ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

5. SpringBoot整合mybatis框架

2020-10-23 20:31:34  阅读:118  来源: 互联网

标签:SpringBoot 框架 com id mybatis import asimple public String


  • Spring框架整合mybatis回顾
    • 引入依赖
      • spring mybatis
      • mybatis-spring
      • jar
      • mysql
      • druid
      • lombook
      • log4j
    • 建表
    • 开发实体类
    • DAO接口
    • Mapper映射文件
    • 书写Service接口
    • 书写Service实现类 @Service @Transactional 注入DAO相关对象
    • 配置spring.xml
      • 引入小配置文件
      • 开启注解扫描
      • 创建数据源对象 DruidDataSource  driverClassName url username pwssword
      • 创建sqlSessionFactory 注入Datasource  注入Mapper配置文件位置 
      • 创建DAO MapperScannerconfigurer  注SqlSessionFactory  注入DAO接口所在包,SqlSessionFactory.opensession().getMapper(UserDAO.class)
      • 创建事务管理器 DAtaSourceTransactionManager  注入DataSource
      • 开启注解事务生效

 

  • SpringBoot整合mybatis
    • 引入依赖 
      • mybatis-springboot-starter (自动依赖mybatis核心)
      • mysql
      • druid
      • lombook
<!-- 引入Mysql的驱动 -->
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>5.1.38</version>
</dependency>


<!-- 引入mybatis依赖 -->
<dependency>
  <groupId>org.mybatis.spring.boot</groupId>
  <artifactId>mybatis-spring-boot-starter</artifactId>
  <version>1.3.3</version>
</dependency>


<!-- 引入druid依赖 -->
<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>druid</artifactId>
  <version>1.1.22</version>
</dependency>

<!-- 引入lombok,不是必须的,提供了简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 java 代码 -->
<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <version>1.18.8</version>
  <scope>provided</scope>
</dependency>
    • 配置springboot配置文件整合mybatis
      • 引入小配置文件和开启注解扫描都SpringBoot自动做完了
      • 下面是,创建数据源对象 DruidDataSource  driverClassName url username pwssword
      • 还有 创建sqlSessionFactory 注入Datasource  注入Mapper配置文件位置 
spring:   datasource:     type: com.alibaba.druid.pool.DruidDataSource     driver-class-name: com.mysql.jdbc.Driver     url: jdbc:mysql://localhost:3306/project?useSSL=false&characterEncoding=UTF-8     username: mysql     password: 123456   mybatis:   mapper-locations: classpath:com/asimple/mapper/*.xml   # The name is the same as the class name or the letter of the class name. User|user   type-aliases-package: com.asimple.entity   # SqlSessionFactory as other name
    • 入口类加入DAO接口的扫描注解 @MapperScan(DAO地址)
// Application.java
@SpringBootApplication
@MapperScan("com.asimple.dao")
public class Application {
//main函数 public static void main(String[] args){ //启动SpringBoot应用 //参数1:入口类的类对象, 参数2:main函数参数 SpringApplication.run(Application.class, args); } }
    • 建表
      • 使用Navicat在Mysql数据库中,新建test中的表 user用作实验,表中包含三条user数据
    • 实体类
      • entity包中新建user类
package com.asimple.entity;

import lombok.Data;
import lombok.experimental.Accessors;

import java.util.Date;

@Data
@Accessors(chain = true)
//用户类
public class User {
    private String U_id;
    private String U_pwd;public User(){}

    public User(String u_id, String u_pwd) {
        U_id = u_id;
        U_pwd = u_pwd;
    }public String getU_id() {
        return U_id;
    }

    public void setU_id(String u_id) {
        U_id = u_id;
    }

    public String getU_pwd() {
        return U_pwd;
    }

    public void setU_pwd(String u_pwd) {
        U_pwd = u_pwd;
    }
}
    • DAO接口
      • 新建BaseDAO接口,用于其他DAO实现
package com.asimple.dao;

import org.apache.ibatis.annotations.Param;
import java.util.List;

public interface BaseDAO<T> {

    //增加数据
    void save(T t);

    //更新数据
    void update(T t);

    //删除数据
    void delete(String id);

    //通过id查找
    T findById(String id);

    //查找所有的信息
    List<T> findAll();

    //统计信息的总条数
    Long findTotalCounts();

    //这里得@Param是因为要用mybatis传多个参数,所以用@Param传过来
    //@Param是mybatis所提供的(org.apache.ibatis.annotations.Param),作为Dao层的注解
    //作用是用于传递参数,从而可以与SQL中的的字段名相对应,一般在2=<参数数<=5时使用最佳
    //参数1:起始条数    参数2:每页显示记录数据
    List<T> findByPage(@Param("start") Integer start, @Param("size") Integer size);

}
      • 新建UserDAO接口,继承上述的BaseDAO接口(接口继承接口,类继承类,类实现接口)
package com.asimple.dao;

import com.asimple.entity.User;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface UserDAO extends BaseDAO<User>{
    @Override
    void save(User user);

    @Override
    void delete(String id);

    @Override
    User findById(String id);

    @Override
    void update(User user);

    @Override
    List<User> findAll();

    @Override
    Integer findTotalCounts();

    @Override
    List<User> findByPage(Integer start, Integer size);
}
    • Mapper配置文件
      • 由于上面配置mybatis的时候,写的是type-aliases-package: com.asimple.entity
      • 所以在resources的目录下新建com/asimple/mapper,在mapper中新建UserDAOMapper.xml(这里的Mapper是自己手动建立的Templates ,UserDAOMapper.xml的名字不一定要跟DAO一样,重要的是里面的<mapper>你写的是UserDAO就行)
<?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.asimple.dao.UserDAO">

     <!-- parameterType: 传入参数,没有的话也没关系,resultType: 返回类型,会自动匹配字段属性,可以是类,也可以是基本变量等等
      实体类的属性最好跟数据库一样,不容易出错 -->   <insert id="save" parameterType="com.asimple.entity.User"> insert into user values(#{U_id}, #{U_pwd}) </insert> <select id="findAll" resultType="com.asimple.entity.User"> select * from user </select> </mapper>
    • Service接口(业务层)
      • 新建 service 包
      • 新建 UserService 接口(这边只举例两个方法)
      • 新建userServiceImpl,Service实现类    @Service    @Transactional    注入DAO
package com.asimple.service;

import com.asimple.entity.User;

import java.util.List;

public interface UserService {

    void save(User user);

    List<User> findAll();
}
package com.asimple.service;

import com.asimple.dao.UserDAO;
import com.asimple.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;

@Service
@Transactional
public class UserServiceImpl implements UserService {

    @Autowired
    private UserDAO userDAO;

    @Override
    public void save(User user) {
        userDAO.save(user);
    }

    @Override
    @Transactional(propagation = Propagation.SUPPORTS)
    public List<User> findAll() {
        List<User> list = userDAO.findAll();
        return list;
    }
}
    • 书写Controller类并跳转html页面
package com.asimple.controller;

import com.asimple.entity.User;
import com.asimple.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.List;

@Controller
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;

    //查找所有数据,并转发给前端
    @RequestMapping("/findAll")
    public String findAll(Model model) {
        List<User> users = userService.findAll();
        model.addAttribute("users", users);
        return "showAll";
    }

    //从前端获取数据,保存注册用户信息
    @PostMapping("/save")
    public String save(
            @RequestParam(value = "id", required = false) String id,
            @RequestParam(value = "pwd", required = false) String pwd
    ){
        System.out.println("------------- save User ---------------");
        userService.save(user);

        //注册完跳转登录界面    
        return "login";
    }

}
    • Thymeleaf 模板的 .html 文件,这里新建名为 thymeleaf.html文件,存放位置 src/main/resources/templates/thymeleaf.html
<!DOCTYPE HTML>
<!-- 导入thymeleaf -->
<html lang="en" xmlns:th="https://www.thymeleaf.org">
<head>
    <title>Title</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <!-- th:href = '@{/css/success.css}' 中的css前面的 / 不能省略,会报错 -->
    <link type='text/css' rel='styleSheet' th:href='@{/css/success.css}'/>
    <script th:src="@{/js/test.js}"></script>
</head>

<body>
    <!-- form表单提交 action="控制器的地址,类似网页" method="提交方式,推荐post"-->
    <form th:action="@{/user/save}" method="post">
        <table cellpadding="0" cellspacing="0" border="0">
            <tr>
                Id:<input type="text" name="id">
            </tr>
            <tr>
                Pwd:<input type="password" name="pwd">
            </tr>
        </table>
        <!-- 使用submit提交表单 -->
        <input type="submit" value="提交">
    </form>

    <!-- 从链接跳转Controller,在/zq 项目目录下相对定位,我的项目目录是/zq, http://localhost:8989/zq/ -->
    <a th:href="@{/user/findAll}">查找所有用户</a>

</body>

</html>

 

标签:SpringBoot,框架,com,id,mybatis,import,asimple,public,String
来源: https://www.cnblogs.com/Lunix-touch/p/13866045.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有