1、生成bean实例优化,当bean所属类是一个接口时,自动用aop创建代理实例
2、aop获取拦截器实例优化,当拦截器在bean容器中存在实例时,直接复用bean容器中的实例 3、新增SqlMapper实现、测试代码。使得JdbcTemplate的使用更加优雅
This commit is contained in:
+5
-1
@@ -48,7 +48,11 @@ public class InterceptorFactory {
|
|||||||
clazz,
|
clazz,
|
||||||
() -> {
|
() -> {
|
||||||
try {
|
try {
|
||||||
interceptorCache.set(clazz, clazz.newInstance());
|
if (BeanManager.getBean(clazz) != null) {
|
||||||
|
interceptorCache.set(clazz, BeanManager.getBean(clazz));
|
||||||
|
} else {
|
||||||
|
interceptorCache.set(clazz, clazz.newInstance());
|
||||||
|
}
|
||||||
} catch (InstantiationException|IllegalAccessException e) {
|
} catch (InstantiationException|IllegalAccessException e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
package fun.asgc.neutrino.core.context;
|
package fun.asgc.neutrino.core.context;
|
||||||
|
|
||||||
import fun.asgc.neutrino.core.annotation.*;
|
import fun.asgc.neutrino.core.annotation.*;
|
||||||
|
import fun.asgc.neutrino.core.aop.Aop;
|
||||||
import fun.asgc.neutrino.core.container.LifeCycle;
|
import fun.asgc.neutrino.core.container.LifeCycle;
|
||||||
import fun.asgc.neutrino.core.container.BeanContainer;
|
import fun.asgc.neutrino.core.container.BeanContainer;
|
||||||
import fun.asgc.neutrino.core.util.*;
|
import fun.asgc.neutrino.core.util.*;
|
||||||
@@ -118,6 +119,8 @@ public class Bean implements LifeCycle {
|
|||||||
Configuration configuration = clazz.getAnnotation(Configuration.class);
|
Configuration configuration = clazz.getAnnotation(Configuration.class);
|
||||||
if (null != configuration) {
|
if (null != configuration) {
|
||||||
instance = ConfigUtil.getYmlConfig(clazz);
|
instance = ConfigUtil.getYmlConfig(clazz);
|
||||||
|
} else if (ClassUtil.isInterface(clazz)) {
|
||||||
|
instance = Aop.get(clazz);
|
||||||
} else {
|
} else {
|
||||||
// 由编码规避没有无参构造器的问题
|
// 由编码规避没有无参构造器的问题
|
||||||
instance = clazz.newInstance();
|
instance = clazz.newInstance();
|
||||||
|
|||||||
@@ -0,0 +1,38 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) 2022 aoshiguchen
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in all
|
||||||
|
* copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
* SOFTWARE.
|
||||||
|
*/
|
||||||
|
package fun.asgc.neutrino.core.db.annotation;
|
||||||
|
|
||||||
|
import java.lang.annotation.ElementType;
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
import java.lang.annotation.Target;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author: aoshiguchen
|
||||||
|
* @date: 2022/6/28
|
||||||
|
*/
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
@Target(ElementType.METHOD)
|
||||||
|
public @interface Delete {
|
||||||
|
String value();
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) 2022 aoshiguchen
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in all
|
||||||
|
* copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
* SOFTWARE.
|
||||||
|
*/
|
||||||
|
package fun.asgc.neutrino.core.db.annotation;
|
||||||
|
|
||||||
|
import java.lang.annotation.ElementType;
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
import java.lang.annotation.Target;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author: aoshiguchen
|
||||||
|
* @date: 2022/6/28
|
||||||
|
*/
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
@Target(ElementType.METHOD)
|
||||||
|
public @interface Insert {
|
||||||
|
String value();
|
||||||
|
}
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) 2022 aoshiguchen
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in all
|
||||||
|
* copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
* SOFTWARE.
|
||||||
|
*/
|
||||||
|
package fun.asgc.neutrino.core.db.annotation;
|
||||||
|
|
||||||
|
import java.lang.annotation.ElementType;
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
import java.lang.annotation.Target;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author: aoshiguchen
|
||||||
|
* @date: 2022/6/28
|
||||||
|
*/
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
@Target(ElementType.METHOD)
|
||||||
|
public @interface ResultType {
|
||||||
|
Class<?> value();
|
||||||
|
}
|
||||||
@@ -1,14 +1,23 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (C) 2018-2022 Zeyi information technology (Shanghai) Co., Ltd.
|
* Copyright (c) 2022 aoshiguchen
|
||||||
* <p>
|
*
|
||||||
* All right reserved.
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
* <p>
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
* This software is the confidential and proprietary
|
* in the Software without restriction, including without limitation the rights
|
||||||
* information of Zeyi Company of China.
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
* ("Confidential Information"). You shall not disclose
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
* such Confidential Information and shall use it only
|
* furnished to do so, subject to the following conditions:
|
||||||
* in accordance with the terms of the contract agreement
|
*
|
||||||
* you entered into with Zeyi inc.
|
* The above copyright notice and this permission notice shall be included in all
|
||||||
|
* copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
package fun.asgc.neutrino.core.db.annotation;
|
package fun.asgc.neutrino.core.db.annotation;
|
||||||
|
|
||||||
@@ -19,12 +28,11 @@ import java.lang.annotation.Target;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author: wen.y
|
* @author: aoshiguchen
|
||||||
* @date: 2022/6/28
|
* @date: 2022/6/28
|
||||||
*/
|
*/
|
||||||
@Retention(RetentionPolicy.RUNTIME)
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
@Target(ElementType.METHOD)
|
@Target(ElementType.METHOD)
|
||||||
public @interface Select {
|
public @interface Select {
|
||||||
String sql();
|
String value();
|
||||||
Class<?> resultType();
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,38 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) 2022 aoshiguchen
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in all
|
||||||
|
* copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
* SOFTWARE.
|
||||||
|
*/
|
||||||
|
package fun.asgc.neutrino.core.db.annotation;
|
||||||
|
|
||||||
|
import java.lang.annotation.ElementType;
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
import java.lang.annotation.Target;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author: aoshiguchen
|
||||||
|
* @date: 2022/6/28
|
||||||
|
*/
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
@Target(ElementType.METHOD)
|
||||||
|
public @interface Update {
|
||||||
|
String value();
|
||||||
|
}
|
||||||
@@ -21,10 +21,14 @@
|
|||||||
*/
|
*/
|
||||||
package fun.asgc.neutrino.core.db.mapper;
|
package fun.asgc.neutrino.core.db.mapper;
|
||||||
|
|
||||||
|
import fun.asgc.neutrino.core.aop.Intercept;
|
||||||
|
import fun.asgc.neutrino.core.aop.interceptor.InnerGlobalInterceptor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author: aoshiguchen
|
* @author: aoshiguchen
|
||||||
* @date: 2022/6/28
|
* @date: 2022/6/28
|
||||||
*/
|
*/
|
||||||
|
@Intercept(value = SqlMapperInterceptor.class, exclude = InnerGlobalInterceptor.class)
|
||||||
public interface SqlMapper {
|
public interface SqlMapper {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+62
@@ -0,0 +1,62 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) 2022 aoshiguchen
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in all
|
||||||
|
* copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
* SOFTWARE.
|
||||||
|
*/
|
||||||
|
package fun.asgc.neutrino.core.db.mapper;
|
||||||
|
|
||||||
|
import fun.asgc.neutrino.core.annotation.Autowired;
|
||||||
|
import fun.asgc.neutrino.core.annotation.Component;
|
||||||
|
import fun.asgc.neutrino.core.aop.Invocation;
|
||||||
|
import fun.asgc.neutrino.core.aop.interceptor.Interceptor;
|
||||||
|
import fun.asgc.neutrino.core.db.annotation.Select;
|
||||||
|
import fun.asgc.neutrino.core.db.template.JdbcTemplate;
|
||||||
|
import fun.asgc.neutrino.core.util.Assert;
|
||||||
|
import fun.asgc.neutrino.core.util.StringUtil;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* sqlmapper拦截器
|
||||||
|
* @author: aoshiguchen
|
||||||
|
* @date: 2022/6/28
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
public class SqlMapperInterceptor implements Interceptor {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private JdbcTemplate jdbcTemplate;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void intercept(Invocation inv) {
|
||||||
|
Assert.notNull(jdbcTemplate, "JdbcTemplate未注入,调用失败!");
|
||||||
|
if (inv.getTargetMethod().isAnnotationPresent(Select.class)) {
|
||||||
|
Select select = inv.getTargetMethod().getAnnotation(Select.class);
|
||||||
|
String sql = select.value();
|
||||||
|
if (StringUtil.isEmpty(sql)) {
|
||||||
|
throw new RuntimeException("sql不能为空!");
|
||||||
|
}
|
||||||
|
Class<?> returnType = inv.getReturnType();
|
||||||
|
if (!Collection.class.isAssignableFrom(returnType)) {
|
||||||
|
Object res = jdbcTemplate.query(returnType, sql, inv.getArgs());
|
||||||
|
inv.setReturnValue(res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) 2022 aoshiguchen
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in all
|
||||||
|
* copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
* SOFTWARE.
|
||||||
|
*/
|
||||||
|
package fun.asgc.neutrino.core.db.mapper;
|
||||||
|
|
||||||
|
import com.alibaba.druid.pool.DruidDataSource;
|
||||||
|
import fun.asgc.neutrino.core.annotation.Bean;
|
||||||
|
import fun.asgc.neutrino.core.annotation.Component;
|
||||||
|
import fun.asgc.neutrino.core.annotation.Order;
|
||||||
|
import fun.asgc.neutrino.core.db.template.JdbcTemplate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author: aoshiguchen
|
||||||
|
* @date: 2022/6/28
|
||||||
|
*/
|
||||||
|
@Order(0)
|
||||||
|
@Component
|
||||||
|
public class Configuration {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public JdbcTemplate jdbcTemplate() {
|
||||||
|
DruidDataSource dataSource = new DruidDataSource();
|
||||||
|
dataSource.setUrl("jdbc:mysql://localhost:3306/test1?useUnicode=true&characterEncoding=utf8");
|
||||||
|
dataSource.setUsername("root");
|
||||||
|
dataSource.setPassword("YWasgc@10520");
|
||||||
|
return new JdbcTemplate(dataSource);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) 2022 aoshiguchen
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in all
|
||||||
|
* copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
* SOFTWARE.
|
||||||
|
*/
|
||||||
|
package fun.asgc.neutrino.core.db.mapper;
|
||||||
|
|
||||||
|
import fun.asgc.neutrino.core.annotation.*;
|
||||||
|
import fun.asgc.neutrino.core.launcher.NeutrinoLauncher;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author: aoshiguchen
|
||||||
|
* @date: 2022/6/28
|
||||||
|
*/
|
||||||
|
@NeutrinoApplication
|
||||||
|
public class Launcher {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
NeutrinoLauncher.runSync(Launcher.class, args);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (C) 2018-2022 Zeyi information technology (Shanghai) Co., Ltd.
|
||||||
|
* <p>
|
||||||
|
* All right reserved.
|
||||||
|
* <p>
|
||||||
|
* This software is the confidential and proprietary
|
||||||
|
* information of Zeyi Company of China.
|
||||||
|
* ("Confidential Information"). You shall not disclose
|
||||||
|
* such Confidential Information and shall use it only
|
||||||
|
* in accordance with the terms of the contract agreement
|
||||||
|
* you entered into with Zeyi inc.
|
||||||
|
*/
|
||||||
|
package fun.asgc.neutrino.core.db.mapper;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import fun.asgc.neutrino.core.annotation.Autowired;
|
||||||
|
import fun.asgc.neutrino.core.annotation.Component;
|
||||||
|
import fun.asgc.neutrino.core.runner.ApplicationRunner;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author: aoshiguchen
|
||||||
|
* @date: 2022/6/28
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@Component
|
||||||
|
public class Test1 implements ApplicationRunner {
|
||||||
|
@Autowired
|
||||||
|
private UserMapper userMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run(String[] args) {
|
||||||
|
User user = userMapper.findOneById(1L);
|
||||||
|
log.info("查询结果:{}", JSONObject.toJSONString(user));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) 2022 aoshiguchen
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in all
|
||||||
|
* copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
* SOFTWARE.
|
||||||
|
*/
|
||||||
|
package fun.asgc.neutrino.core.db.mapper;
|
||||||
|
|
||||||
|
import fun.asgc.neutrino.core.db.annotation.Id;
|
||||||
|
import fun.asgc.neutrino.core.db.annotation.Table;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.ToString;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author: aoshiguchen
|
||||||
|
* @date: 2022/6/28
|
||||||
|
*/
|
||||||
|
@ToString
|
||||||
|
@Data
|
||||||
|
@Table("user")
|
||||||
|
public class User {
|
||||||
|
@Id
|
||||||
|
private Long id;
|
||||||
|
private String name;
|
||||||
|
private Integer age;
|
||||||
|
private String email;
|
||||||
|
private String sex;
|
||||||
|
private Date createTime;
|
||||||
|
private Date updateTime;
|
||||||
|
}
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) 2022 aoshiguchen
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in all
|
||||||
|
* copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
* SOFTWARE.
|
||||||
|
*/
|
||||||
|
package fun.asgc.neutrino.core.db.mapper;
|
||||||
|
|
||||||
|
import fun.asgc.neutrino.core.annotation.Component;
|
||||||
|
import fun.asgc.neutrino.core.db.annotation.Select;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author: aoshiguchen
|
||||||
|
* @date: 2022/6/28
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
public interface UserMapper extends SqlMapper {
|
||||||
|
|
||||||
|
@Select("select * from user where id = ?")
|
||||||
|
User findOneById(Long id);
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
application:
|
||||||
|
name: neutrino-core-test
|
||||||
Reference in New Issue
Block a user