Sfoglia il codice sorgente

增加data-mysql-mp组件演示代码,包含注解与XML两种模式混用

luoshi 4 anni fa
parent
commit
0596475caa

+ 4 - 0
api-demo/pom.xml

@@ -21,6 +21,10 @@
             <groupId>com.qmth.boot</groupId>
             <artifactId>data-redis</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.qmth.boot</groupId>
+            <artifactId>data-mysql-mp</artifactId>
+        </dependency>
         <!--
         <dependency>
             <groupId>com.qmth.boot</groupId>

+ 2 - 0
api-demo/src/main/java/com/qmth/demo/api/ApiDemoApplication.java

@@ -1,5 +1,6 @@
 package com.qmth.demo.api;
 
+import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cache.annotation.EnableCaching;
@@ -9,6 +10,7 @@ import org.springframework.cache.annotation.EnableCaching;
  */
 @SpringBootApplication(scanBasePackages = "com.qmth.*")
 @EnableCaching
+@MapperScan("com.qmth.demo.*")
 public class ApiDemoApplication {
 
     public static void main(String[] args) {

+ 57 - 0
api-demo/src/main/java/com/qmth/demo/api/controller/UserController.java

@@ -0,0 +1,57 @@
+package com.qmth.demo.api.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.qmth.boot.api.annotation.Aac;
+import com.qmth.boot.api.annotation.BOOL;
+import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.demo.api.db.*;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.HashSet;
+
+@RestController
+@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/user")
+@Aac(strict = BOOL.FALSE, auth = BOOL.FALSE)
+public class UserController {
+
+    @Resource
+    private UserMapper userMapper;
+
+    @RequestMapping("/list")
+    public Object list(@Validated UserQuery query) {
+        return userMapper.findByEnable(query.getEnable() != null ? query.getEnable() : true);
+        //return userMapper.findByQuery(query);
+    }
+
+    @RequestMapping("/query")
+    public Object query(@Validated UserQuery query) {
+        query.setEnable(true);
+        query.orderByNameDesc();
+        return userMapper.selectPage(query,
+                new QueryWrapper<User>().lambda().likeLeft(query.getName() != null, User::getName, query.getName())
+                        .eq(query.getEnable() != null, User::isEnable, query.getEnable())
+                        .eq(query.getGender() != null, User::getGender, query.getGender())).getRecords();
+    }
+
+    @RequestMapping("/add")
+    @Transactional
+    public Object add(@RequestParam String name, @RequestParam Gender gender) {
+        User u = new User();
+        u.setName(name);
+        u.setGender(gender);
+        u.setEnable(true);
+        u.setAddress(new Address());
+        u.getAddress().setProvince("hubei");
+        u.getAddress().setCity("wuhan");
+        u.setHistory(new HashSet<>());
+        u.getHistory().add("h1");
+        u.getHistory().add("h2");
+        userMapper.insert(u);
+        return u;
+    }
+}

+ 45 - 0
api-demo/src/main/java/com/qmth/demo/api/controller/UserHomeController.java

@@ -0,0 +1,45 @@
+package com.qmth.demo.api.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.qmth.boot.api.annotation.Aac;
+import com.qmth.boot.api.annotation.BOOL;
+import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.demo.api.db.UserHome;
+import com.qmth.demo.api.db.UserHomeMapper;
+import com.qmth.demo.api.db.UserHomeQuery;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.Date;
+
+@RestController
+@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/user/home")
+@Aac(strict = BOOL.FALSE, auth = BOOL.FALSE)
+public class UserHomeController {
+
+    @Resource
+    private UserHomeMapper userHomeMapper;
+
+    @RequestMapping("/list")
+    public Object list(@Validated UserHomeQuery query) {
+        query.orderByTime(true);
+        return userHomeMapper.selectPage(query, new QueryWrapper<UserHome>().lambda()
+                .eq(query.getUserId() != null, UserHome::getUserId, query.getUserId())
+                .likeLeft(query.getHome() != null, UserHome::getHome, query.getHome())).getRecords();
+    }
+
+    @RequestMapping("/add")
+    @Transactional
+    public Object add(@RequestParam Long userId, @RequestParam String home) {
+        UserHome uh = new UserHome();
+        uh.setUserId(userId);
+        uh.setHome(home);
+        uh.setTime(new Date());
+        userHomeMapper.insert(uh);
+        return uh;
+    }
+}

+ 34 - 0
api-demo/src/main/java/com/qmth/demo/api/db/Address.java

@@ -0,0 +1,34 @@
+package com.qmth.demo.api.db;
+
+public class Address {
+
+    private String province;
+
+    private String city;
+
+    private String district;
+
+    public String getProvince() {
+        return province;
+    }
+
+    public void setProvince(String province) {
+        this.province = province;
+    }
+
+    public String getCity() {
+        return city;
+    }
+
+    public void setCity(String city) {
+        this.city = city;
+    }
+
+    public String getDistrict() {
+        return district;
+    }
+
+    public void setDistrict(String district) {
+        this.district = district;
+    }
+}

+ 6 - 0
api-demo/src/main/java/com/qmth/demo/api/db/Gender.java

@@ -0,0 +1,6 @@
+package com.qmth.demo.api.db;
+
+public enum Gender {
+
+    MALE, FEMALE;
+}

+ 76 - 0
api-demo/src/main/java/com/qmth/demo/api/db/User.java

@@ -0,0 +1,76 @@
+package com.qmth.demo.api.db;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
+
+import java.util.Set;
+
+@TableName(value = "temp_user", autoResultMap = true)
+public class User {
+
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    private String name;
+
+    private Gender gender;
+
+    private boolean enable;
+
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private Set<String> history;
+
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private Address address;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public boolean isEnable() {
+        return enable;
+    }
+
+    public void setEnable(boolean enable) {
+        this.enable = enable;
+    }
+
+    public Gender getGender() {
+        return gender;
+    }
+
+    public void setGender(Gender gender) {
+        this.gender = gender;
+    }
+
+    public Address getAddress() {
+        return address;
+    }
+
+    public void setAddress(Address address) {
+        this.address = address;
+    }
+
+    public Set<String> getHistory() {
+        return history;
+    }
+
+    public void setHistory(Set<String> history) {
+        this.history = history;
+    }
+}

+ 39 - 0
api-demo/src/main/java/com/qmth/demo/api/db/UserHome.java

@@ -0,0 +1,39 @@
+package com.qmth.demo.api.db;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.util.Date;
+
+@TableName(value = "temp_user_home", autoResultMap = true)
+public class UserHome {
+
+    private Long userId;
+
+    private String home;
+
+    private Date time;
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public String getHome() {
+        return home;
+    }
+
+    public void setHome(String home) {
+        this.home = home;
+    }
+
+    public Date getTime() {
+        return time;
+    }
+
+    public void setTime(Date time) {
+        this.time = time;
+    }
+}

+ 7 - 0
api-demo/src/main/java/com/qmth/demo/api/db/UserHomeMapper.java

@@ -0,0 +1,7 @@
+package com.qmth.demo.api.db;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+public interface UserHomeMapper extends BaseMapper<UserHome> {
+
+}

+ 50 - 0
api-demo/src/main/java/com/qmth/demo/api/db/UserHomeQuery.java

@@ -0,0 +1,50 @@
+package com.qmth.demo.api.db;
+
+import com.baomidou.mybatisplus.core.metadata.OrderItem;
+import com.qmth.boot.mysql.query.BaseQuery;
+import org.springframework.validation.annotation.Validated;
+
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+
+@Validated
+public class UserHomeQuery extends BaseQuery<UserHome> {
+
+    private static final long serialVersionUID = 5135300934708947962L;
+
+    private Long userId;
+
+    private String home;
+
+    public void orderByTime(boolean asc) {
+        addOrder(new OrderItem("time", asc));
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public String getHome() {
+        return home;
+    }
+
+    public void setHome(String home) {
+        this.home = home;
+    }
+
+    @Min(1)
+    public long getPageNumber() {
+        return super.getPageNumber();
+    }
+
+    @Min(1)
+    @Max(100)
+    public long getPageSize() {
+        return super.getPageSize();
+    }
+
+}

+ 17 - 0
api-demo/src/main/java/com/qmth/demo/api/db/UserMapper.java

@@ -0,0 +1,17 @@
+package com.qmth.demo.api.db;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.ResultMap;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+
+public interface UserMapper extends BaseMapper<User> {
+
+    List<User> findByQuery(UserQuery query);
+
+    //MybatisPlus内置规则,开启autoResultMap后,名称为mybatis-plus_XXX
+    @ResultMap("mybatis-plus_User")
+    @Select("select * from temp_user where enable=#{enable}")
+    List<User> findByEnable(boolean enable);
+}

+ 60 - 0
api-demo/src/main/java/com/qmth/demo/api/db/UserQuery.java

@@ -0,0 +1,60 @@
+package com.qmth.demo.api.db;
+
+import com.baomidou.mybatisplus.core.metadata.OrderItem;
+import com.qmth.boot.mysql.query.BaseQuery;
+import org.springframework.validation.annotation.Validated;
+
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+
+@Validated
+public class UserQuery extends BaseQuery<User> {
+
+    private static final long serialVersionUID = 5160957717754609086L;
+
+    private String name;
+
+    private Boolean enable;
+
+    private Gender gender;
+
+    public void orderByNameDesc() {
+        addOrder(new OrderItem("name", false));
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Boolean getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Boolean enable) {
+        this.enable = enable;
+    }
+
+    public Gender getGender() {
+        return gender;
+    }
+
+    public void setGender(Gender gender) {
+        this.gender = gender;
+    }
+
+    @Min(1)
+    public long getPageNumber() {
+        return super.getPageNumber();
+    }
+
+    @Min(1)
+    @Max(100)
+    public long getPageSize() {
+        return super.getPageSize();
+    }
+
+}

+ 5 - 0
api-demo/src/main/resources/application.properties

@@ -10,6 +10,11 @@ server.port=8080
 #com.qmth.logging.root-level=info
 #com.qmth.logging.file-path=/Users/luoshi/Downloads/demo.log
 
+com.qmth.mysql.url=jdbc:mysql://192.168.10.30:3306/stmms_ft?useUnicode=true&characterEncoding=UTF-8
+com.qmth.mysql.username=stmms
+com.qmth.mysql.password=stmms
+com.qmth.mysql.log-level=debug
+
 com.qmth.cache.expire-after-write=30s
 
 com.qmth.redis.host=127.0.0.1

+ 20 - 0
api-demo/src/main/resources/mapper/UserMapper.xml

@@ -0,0 +1,20 @@
+<?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.qmth.demo.api.db.UserMapper">
+
+    <!--MybatisPlus内置规则,开启autoResultMap后,名称为mybatis-plus_XXX-->
+    <select id="findByQuery" resultMap="mybatis-plus_User">
+        select * from temp_user
+        <where>
+            <if test="name != null">
+                and `name` like concat(#{name},'%')
+            </if>
+            <if test="enable != null">
+                and `enable`=#{enable}
+            </if>
+            <if test="gender != null">
+                and `gender`=#{gender}
+            </if>
+        </where>
+    </select>
+</mapper>

+ 5 - 0
pom.xml

@@ -46,6 +46,11 @@
                 <artifactId>data-redis</artifactId>
                 <version>${qmth.boot.version}</version>
             </dependency>
+            <dependency>
+                <groupId>com.qmth.boot</groupId>
+                <artifactId>data-mysql-mp</artifactId>
+                <version>${qmth.boot.version}</version>
+            </dependency>
             <dependency>
                 <groupId>junit</groupId>
                 <artifactId>junit</artifactId>