IDEA+SpringBoot MyBatis Dynamic SQL的初體驗(二)


在上節IDEA+SpringBoot MyBatis Dynamic SQL的初體驗(一)中,講解了Mybatis Dynamic SQL數據庫生成https://www.cnblogs.com/hjm0928/p/9955228.html

現在那看一下怎么使用

先看一下項目結構

可以看到實體類,Mapper文件和DynamicSqlSupport文件都生成成功了

第一步 修改application.properties修改為application.yml  內容如下

spring:
    datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/nice_test?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=UTC
        username: pigge
        password: 123456
    http:
        encoding:
            force: true
mybatis:
    mapper-locations: com.pigge.mybatistest.mapper
server:
    tomcat:
        uri-encoding: UTF-8
    port: 8080
logging:
    level:
        # 打開日志輸出
        com.pigge.mybatistest: DEBUG
    path: logs\spring
debug: true

在創建UserService類

package com.pigge.mybatistest.service;

import com.pigge.mybatistest.entity.User;
import com.pigge.mybatistest.util.Page;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
* @author hjm0928
*/
public interface UserService {
/**
* 根據用戶名查詢表內數據
* @param username 用戶名
* @return 數據列表
*/
User selectByUsername(@Param("username")String username);

/**
* 分頁查找數據
* @param page 分頁工具類
* @return 記錄集
*/
List<User> selectAll(Page page);
}

UserServiceImpl類

package com.pigge.mybatistest.service.impl;

import com.pigge.mybatistest.entity.User;
import com.pigge.mybatistest.mapper.UserDynamicSqlSupport;
import com.pigge.mybatistest.mapper.UserMapper;
import com.pigge.mybatistest.service.UserService;
import com.pigge.mybatistest.util.Page;
import com.sun.org.apache.bcel.internal.generic.InstructionComparator;
import com.sun.org.apache.bcel.internal.generic.Select;
import org.mybatis.dynamic.sql.render.RenderingStrategy;
import org.mybatis.dynamic.sql.where.condition.IsEqualTo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

import static org.mybatis.dynamic.sql.select.SelectDSL.select;


/**
 * @author hjm0928
 */
@Service
public class UserServiceImpl implements UserService {

    private final UserMapper userMapper;

    @Autowired
    public UserServiceImpl(UserMapper userMapper) {
        this.userMapper = userMapper;
    }

    @Override
    public User selectByUsername(String username) {
        InstructionComparator select = Select.getComparator();
        //SQL語句為 select username, password, tel from user where username = ?; 參數username
        User user = userMapper.selectOne(
                select(
                        UserDynamicSqlSupport.username,
                        UserDynamicSqlSupport.password,
                        UserDynamicSqlSupport.tel
                ).from(UserDynamicSqlSupport.user)
                .where(UserDynamicSqlSupport.username, IsEqualTo.of(()->username))
                .build()
                .render(RenderingStrategy.MYBATIS3)
        );
        //SQL語句 select username....(所有字段) from user where username = ?; 參數username
        user = userMapper.selectByExample()
                .where(UserDynamicSqlSupport.username, IsEqualTo.of(()->username))
                .build()
                .execute()
                .get(0);
        return user;
    }

    @Override
    public List<User> selectAll(Page page) {
        //下一節實現 因為Mybatis Dynamic Sql沒有默認的分頁支持, 只能自定義
        return null;
    }
}

UserController類

package com.pigge.mybatistest.controller;

import com.fasterxml.jackson.databind.util.JSONPObject;
import com.pigge.mybatistest.entity.User;
import com.pigge.mybatistest.service.UserService;
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.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @author hjm0928
 */
@Controller
public class UserController {

    private final UserService userService;

    @Autowired
    public UserController(UserService userService) {
        this.userService = userService;
    }

    @RequestMapping("/get")
    @ResponseBody
    private User get(String username){
        return userService.selectByUsername(username);
    }
}

此時項目結構為

運行MyBatisTestApplication類, 在瀏覽器中輸入http://localhost:8080/get?username=youUsername 其頁面結果為

后台日志輸出為

ok  測試成功

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM