Spring Boot 整合 MyBatis

application.yml 配置文件

server:
  port: 10001

spring: # spring定义的格式	
  application:
    name: 自定义项目名称(可以省略,如果定义则必须唯一)
  datasource:
    username: 数据库用户名
    password: "数据库密码"
    # Mysql8.x版本,连接时url需要指定时区,并且驱动类包名发生了变化
    url: jdbc:mysql://输入ip:输入端口/输入数据库名称?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
    type: com.alibaba.druid.pool.DruidDataSource

mybatis:
  type-aliases-package: 输入项目package目录 

controller
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

@Controller
@RequestMapping(path = "/user")
public class UserController {
  
    @Autowired
    private UserService userService;
  
    /**
     * 查询所有用户信息
     * @return
     */
    @RequestMapping(path = "/findAll") //子路径
    @ResponseBody //异步请求处理
    public Result findAll() {
      
        List<User> users = userService.findAll();
      
        //如果ok直接返回数据
        return Result.ok(users);
        
        //测试访问 http://localhost:10001/user/findAll
    }
}

service

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service
@Transactional(readOnly = true, propagation = Propagation.SUPPORTS) // 声明式事务
public class UserServiceImpl implements UserService {
  
    @Autowired
    private UserMapper userMapper;

    @Override
    public List<User> findAll() {
      
      return userMapper.selectAll();
      
    }
}

dao

import tk.mybatis.mapper.common.Mapper;

// 继承通用tk.mybatis.mapper框架父接口
public interface UserMapper extends Mapper<User> {
    // ctrl+i 查看接口方法
}

tk.mybatis.mapper Mapper 源码

  UserMapper 接口
 	继承 Mapper<User> 
  		继承 BaseMapper<T> 
  			继承 BaseSelectMapper<T>
  				继承 SelectAllMapper<T>
  					接口定义的方法之一 List<T> selectAll();
  
  BaseSelectProvider 实现类
  	继承 MapperTemplate 抽象类
  		实现 String selectAll(MappedStatement ms)
  
  public class BaseSelectProvider extends MapperTemplate {
  
  ....
  
      public String selectAll(MappedStatement ms) {
            final Class<?> entityClass = getEntityClass(ms);
            //修改返回值类型为实体类型
            setResultType(ms, entityClass);
            StringBuilder sql = new StringBuilder();
            sql.append(SqlHelper.selectAllColumns(entityClass));
            sql.append(SqlHelper.fromTable(entityClass, tableName(entityClass)));

            // 逻辑删除的未删除查询条件
            sql.append("<where>");
            sql.append(SqlHelper.whereLogicDelete(entityClass, false));
            sql.append("</where>");

            sql.append(SqlHelper.orderByDefault(entityClass));
            return sql.toString();
        }

.....

pojo

  
import javax.persistence.*;
import java.io.Serializable;

@Entity 
@Table(name = "tb_user")
public class User implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY) //主键自增
    private Integer id;
    private String name;
    private String gender;
    private Integer age;
    private String address;
    private String qq;
    private String email;
    private String username;
    private String phone;

	//getter setter tostring

index.html

<div class="container" id="userList">

    ....

        <tr v-for="user in userList">
            <!--差值表达式-->
            <td>{{user.id}}</td>
            <td>{{user.name}}</td>
            <td>{{user.gender}}</td>
            <td>{{user.age}}</td>
            <td>{{user.address}}</td>
            <td>{{user.qq}}</td>
            <td>{{user.email}}</td>
            
	....

        </tr>
    </table>
</div>

list.js


....

  findAll: function () {
              var url = "/user/findAll";
              var _this = this; 
              //发送异步请求获取所有用户数据
              axios.get(url).then(function (response) {
                  //console.log(response);
                  if(!response.data.status){
                      alert(response.msg);
                      return ;
                  }
                  _this.userList = response.data.data;
              });

....

导入依赖:

   <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.2.RELEASE</version>
    </parent>

    <dependencies>
        <!--通用mapper启动器依赖-->
        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper-spring-boot-starter</artifactId>
            <version>2.1.5</version>
        </dependency>

        <!--mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
      
        <!--druid启动器依赖-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>

        <!-- 热部署 不需要重启tomcat服务器,修改的代码自动生效-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>

        <!--JDBC启动器依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>

        <!--web启动器依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!--编码工具包-->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>

    </dependencies>
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务