精华内容
下载资源
问答
  • SQL注释
    2022-01-25 14:50:03

    1.单行注释

    show databases; #展示数据库

    '#'后面的内容是注释,这个是单行注释。

    2.多行注释

    /* 这是注释 */
    show databases;

    /* xxxx */

    3.SQL内注释

    show databases comment 'xxx';

    在最后加一个comment 'xxx' 。

    更多相关内容
  • mybatis(五): SQL 注解

    千次阅读 2020-01-06 22:44:37
    Mybatis 注解 mybatis 注解在mybatis jar包中的E:org.apache.ibatis.annotations包中,所有注解类如下所示。 常用注解 @Select 用于查询sql。属性为String[]。@Select({"","") @Insert 用于插入sql。...

    Mybatis 注解

    1. mybatis 注解在mybatis jar包中的E:org.apache.ibatis.annotations包中,所有注解类如下所示。

    在这里插入图片描述

    1. 常用注解

      @Select用于查询sql。属性为String[]。@Select({"","")
      @Insert用于插入sql。属性为String[]。
      @Update用于修改sql。属性为String[]。
      @Delete用于删除sql。属性为String[]。
      @Results多个结果映射Result合集。参数为id和Result[]。
      @Result单个结果映射。属性有:id、column、property、javaType、jdbcType、type Handler、one、many。id属性是一个布尔值,表示是否用于主键映射。column数据库字段。property是Bean属性。javaTypeBean属性类型。jdbcType数据库字段属性。typeHandler类型处理器。 one 属性一对一,和xml配置中的相似。many属性是多对多,和XML配置的相似
      @ResultMap结果集映射。引入其他Results结果映射。
      @ResultType结果集映射。
      @Param输入参数设置。
      @Options设置参数项,主要用于update、insert中
      @One一对一(后续讲解)
      @Many多对多(后续讲解)
      @SelectProviderselect的动态查询。
      @InsertProviderinsert的动态插入
      @UpdateProviderupdate的动态修改
      @DeleteProviderdelete的动态删除
    2. 用法

      @Select

      注解只有一个String[]数组。如果数组中有多个值,会将多个值拼接成一个String。

      @Select(value = {"select id,name,password,age from tb_users"})
      List<User> getAllUser();
      
      @Select({"select id,name,password,age from tb_users","where id=2"})
      List<User> getUserByUserid();
      
      DEBUG [main] - ==>  Preparing: select id,name,password,age from tb_users 
      
      DEBUG [main] - ==>  Preparing: select id,name,password,age from tb_users where id=2 
      

      @Results和@Result

      ​ Results中可以包含多个Result注解。其中每个Result注解设置javaBean对象和数据库表映射关系。

      @Select({"select id,name,password,age from tb_users","where id=2"})
      @Results({
          @Result(id = true, property = "id", column = "id"),
          @Result(property = "name", column = "name"),
          @Result(property = "password", column = "password"),
          @Result(property = "age", column = "age")
          })
      List<User> getUserByUserid();
      

      @ResultMap

      ResultMap属性是String[],如下实例中,getUser3方法中的@ResultMap({“results”})引用getUserByUserid方法中的Results结果集

      @Select({"select id,user_name,password,age from tb_users2","where id=2"})
      @Results(id="results",value = {
          @Result(id = true, property = "id", column = "id"),
          @Result(property = "name", column = "user_name"),
          @Result(property = "password", column = "password"),
          @Result(property = "age", column = "age")
          })
      List<User> getUserByUserid();
      
      @Select(value = {"select id,user_name,password,age from tb_users2"})
      @ResultMap({"results"})
      List<User> getUser3();
      

      @ResultType

      ResultType属性为返回值的javaBean对象。与@ResultMap不可以同时使用

      @Select(value = {"select id,user_name,password,age from tb_users2"}) @ResultType(User.class)
      List<User> getUser4();
      

      @Param

      param设置参数值名称。@Param(“name”)和#{name}一致

      @Select("select id,user_name,password,age from tb_users2 where id = #{id} and user_name = #{name} ")
      User getUser5(@Param("id") Long id,@Param("name") String username);
      

      @Insert

      insert属性为string[]。如果数组中有多个值,会将多个值拼接成一个String。可以批量插入。

      @Insert("INSERT INTO tb_users2 (user_name, PASSWORD, age)VALUES(#{name},#{password},#{age})")
      int InsertUser(User user);
      
      @Insert({"INSERT INTO tb_users2 (user_name, PASSWORD, age)VALUES","(#{name},#{password},#{age})"})
      int InsertUser2(User user);
      

      @Options

      设置参数项,主要用于update、insert中。可以操作返回主键值

      useGeneratedKeyskeyPropertykeyColumn`使用(使用的是mysql数据库,支持自增)

      @Insert("INSERT INTO tb_users2 (user_name, PASSWORD, age)VALUES(#{name},#{password},#{age})")
      @Options(useGeneratedKeys = true,keyProperty = "id",keyColumn = "id")
      int InsertUser3(User user);
      

      @SelectKey

      返回非自增主键。

      keyProperty指定主键属性名,before属性值true|false。resultType 返回值类型。statement属性写sql语句。statementType设置statement类型,默认是PREPARED的。可设置值有PREPARED|STATEMENT|CALLABLE

      @Insert("INSERT INTO tb_users2 (user_name, PASSWORD, age)VALUES(#{name},#{password},#{age})")
      @SelectKey(keyProperty = "id",before = false,resultType = Long.class,statement = "select LAST_INSERT_ID()",statementType = StatementType.PREPARED
          )
          int InsertUser4(User user);
      

      @SelectProvider、@InsertProvider、@UpdateProvider、@DeleteProvider

      与sql语句构造器类组合使用。

      type为构造器类。method为构造器类中的方法(注意:方法修饰符必须为public)。

      @SelectProvider(type= ProviderConfig.class,method = "getUser")
      List<User> getUserSelectProvider();
      
      /**
      	sql语句构造器类
       */
      public class ProviderConfig {  
      	/**
      	方法修饰符必须为public(和类反射的方法权限有关)	
      	方法返回值类型为String
      	*/
         public String getUser(){
              String sql = new SQL(){{
                  SELECT("id,user_name,password,age");
                  FROM("tb_users2");
              }}.toString();
              return sql;
          }
      
      }
      
    展开全文
  • java_SQL文件批量删除注释 ,实现自动批量处理Sql脚本中的注释,方便发布您自己的脚本,简单好用。亲测可以用的,谢谢支持。
  • SQL注解(动态SQL语句)

    2021-07-05 17:21:49
    JAVA @Select注解 动态查询
    @Select({"<script>", 
    "select
    w.warn_status warnStatus,
    w.warn_level warnLevel,
    w.warn_type warnType,
    c.DEVICE_CODE deviceCode,
    c.APPLICATION_DEVICE_CODE applicationDeviceCode,
    f.DEPARTMENT_CODE departmentCode,
    f.DEPARTMENT_NAME departmentName,
    f.VEHICLE_AGE vehicleAge,
    f.DATA_SOURCE dataSource,
    f.ASSETS_FORM assetsForm,
    f.MMIS mmis,f.LICENSE_PLATE_NUMBER licensePlateNumber, 
    f.ASSETS_CODE assetsCode, 
    f.ASSETS_NAME assetsName,
    f.ASSETS_CLASSIFY_CODE assetsClassifyCode,
    f.ASSETS_CLASSIFY_NAME assetsClassifyName,
    f.ENGINE_NUMBER engineNumber 
    from
    finance_office_hn.fixed_assets f 
    left join 
    finance_office_hn.assets_device_bind b 
    on 
    f.assets_code = b.assets_code 
    left join 
    finance_office_hn.cfg_device c 
    on
    b.device_code = c.device_code 
    left join 
    finance_office_hn.warn_event w 
    on 
    f.assets_code=w.assets_code", 
    "<where>", 
    "<if test= \"departmentCode != null and departmentCode != ''\">", 
    "and f.DEPARTMENT_CODE=#{departmentCode}", 
    "</if>", 
    "<if test= \"assetsForm != null and assetsForm != ''\">", 
    "and f.ASSETS_FORM=#{assetsForm}", 
    "</if>",
    "<if test= \"warnLevel != null and warnLevel != ''\">",
    "and w.WARN_LEVEL=#{warnLevel}", 
    "</if>",
    "and w.WARN_STATUS=0 and w.IS_DELETE=0 and f.IS_DELETE=0 and c.IS_DELETE=0 and b.IS_DELETE=0 and w.WARN_LEVEL !=0", 
    "</where>", 
    "</script>"})
    List<MonitorDto> findByAssetsForm(MonitorDto monitorDto);

    展开全文
  • ORACLE的SQL注释

    2017-06-01 11:26:33
    此文档包含了ORACLE常用的功能:数据库解锁,查看当前连接数,检查IO,更改数据库字符集,统计数据, 建表空间,查询表空间占用情况,删除表空间,恢复表空间
  • sql注释方法说明

    2015-05-06 13:08:43
    sql注释方法的说明,各种注释的方法,一行以及多行的注释注释的快捷方式
  • 手写Mybatis SQL注解

    2020-08-12 11:06:14
    手写Mybatis SQL注解 一、效果演示 数据库中有user表 Mapper 3.使用Mapper,添加数据 查询 一、实现 1. 思路 先模仿mybatis自定义自己的注解,并封装下数据库连接和数据操作的工具类。由于Mapper一般都为...

    手写Mybatis SQL注解

    一、效果演示

    1. 数据库中有user表
      在这里插入图片描述
    2. Mapper
      在这里插入图片描述
      3.使用Mapper,添加数据
      在这里插入图片描述
      在这里插入图片描述
    3. 查询
      在这里插入图片描述
      在这里插入图片描述

    一、实现

    1. 思路

    先模仿mybatis自定义自己的注解,并封装下数据库连接和SQL操作的工具类。由于Mapper一般都是接口形式,就不能通过反射实例化对象和返回处理结果,但可以通过java动态代理来拦截方法注解和返回对象结果,首先在动态代理的invoke方法中判断方法上是否含有SQL注解,如果含有SQL注解则再通过Method拿到参数里的Param注解,并根据注解内容作为key,用户传递参数内容为value存到map容器中形成映射关系。接着根据方法上的注解拿到其sql语句,并使用字符串处理取出#{}中的内容存到数组中,然后再将sql语句的#{xxx}转化为?形式,再根据刚才的数组内容顺序去容器中取出对应的值存到列表中,这一步主要防止用户参数的顺序与sql中#{}中参数顺序不一致的情况,最后执行sql语句。如果是查询的话,则要多一个orm步骤,先根据方法的类型拿到Class<?>,然后实例化对象,遍历对象的内部属性,并根据内部属性的名称在ResultSet中取出内容,并赋值给对象,最后将对象返还给用户。

    1. 主要步骤

    1. 动态代理 invoke
    	public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
            BXCInsert insert = method.getDeclaredAnnotation(BXCInsert.class);
            if (insert != null) {
                return Insert(insert, proxy, method, args);
            }
            BXCSelect select = method.getDeclaredAnnotation(BXCSelect.class);
            if (select != null) {
                return select(select, proxy, method, args);
            }
            return null;
        }
    
    1. 添加数据
     private Object Insert(BXCInsert extInsert, Object proxy, Method method, Object[] args) {
            //获取注解的SQL语句
            String sql = extInsert.value();
            //获取方法中的参数,根据@BXCParam 的value作为key,用户传递参数为value存到map中
            ConcurrentHashMap<Object, Object> paramsMap = paramsMap(proxy, method, args);
            //获取#{}中的字符串
            String[] sqlInsertParameter = SQLUtils.sqlInsertParameter(sql);
            //依据上面的数组的顺序取map容器中取到真实数据,防止参数顺序与sql中参数顺序不一致的情况下
            List<Object> sqlParams = sqlParams(sqlInsertParameter, paramsMap);
            //将#{}换成?
            String newSQL = SQLUtils.parameQuestion(sql, sqlInsertParameter);
            //指向SQL语句
            return JDBCUtils.insert(newSQL, false, sqlParams);
        }
    
    1. 取出方法中的参数,使用@BXCParam的value作为key,用户传递的内容为value
    private ConcurrentHashMap<Object, Object> paramsMap(Object proxy, Method method, Object[] args) {
            ConcurrentHashMap<Object, Object> paramsMap = new ConcurrentHashMap<>();
            Parameter[] parameters = method.getParameters();
            for (int i = 0; i < parameters.length; i++) {
                Parameter parameter = parameters[i];
                BXCParam extParam = parameter.getDeclaredAnnotation(BXCParam.class);
                if (extParam != null) {
                    String paramName = extParam.value();
                    Object paramValue = args[i];
                    paramsMap.put(paramName, paramValue);
                }
            }
            return paramsMap;
        }
    
    1. select
     private Object select(BXCSelect select, Object proxy, Method method, Object[] args) throws SQLException, IllegalAccessException, InstantiationException {
            //获取SQL语句
            String sql = select.value();
            //获取方法中的参数,根据@BXCParam 的value作为key,用户传递参数为value存到map中
            ConcurrentHashMap<Object, Object> paramsMap = paramsMap(proxy, method, args);
            //获取#{}中的字符串
            List<String> sqlSelectParameter = SQLUtils.sqlSelectParameter(sql);
            //依据上面的数组的顺序取map容器中取到真实数据
            List<Object> sqlParams = new ArrayList<>();
            for (String parameterName : sqlSelectParameter) {
                Object parameterValue = paramsMap.get(parameterName);
                sqlParams.add(parameterValue);
            }
            // 将#{}换成?
            String newSql = SQLUtils.parameQuestion(sql, sqlSelectParameter);
            //执行SQL语句,并拿到ResultSet对象
            ResultSet res = JDBCUtils.query(newSql, sqlParams);
            //判断是否有值
            if (!res.next()) {
                return null;
            }
            //上面判断会游标会向下走一个,返还回去
            res.previous();
            //拿到方法返回的Class<?>
            Class<?> returnType = method.getReturnType();
            //实例化对像
            Object object = returnType.newInstance();
            while (res.next()) {
                //拿到对象的所有内部属性
                Field[] declaredFields = returnType.getDeclaredFields();
                for (Field field : declaredFields) {
                    //属性名称
                    String fieldName = field.getName();
                    //使用属性名称取ResultSet中取出数据
                    Object fieldValue = res.getObject(fieldName);
                    //允许访问私有对象
                    field.setAccessible(true);
                    //将数据赋值给属性
                    field.set(object, fieldValue);
                }
            }
            return object;
        }
    
    1. SqlSession
    public class SqlSession {
    
    	public static <T> T getMapper(Class classz) {
    		return (T) Proxy.newProxyInstance(classz.getClassLoader(), new Class[] { classz },
    				new InvocationHandlerAop(classz));
    	}
    
    }
    
    1. 测试
    public class UserService {
        public static void main(String[] args) {
            UserMapper userMapper = SqlSession.getMapper(UserMapper.class);
            //添加
            int count = userMapper.AddUser("admin","123456");
            System.out.println(count);
            //查询
            UserEntity entity = userMapper.findUserById(43);
            System.out.println(entity);
        }
    }
    
    展开全文
  • 通过使用osql单独来执行报错的脚本,打印相关信息: 代码如下: osql.exe -S .\SQLDEV -U sa -P MyRoot -b -n -r 1 -i “.\UpdateTable.sql” -o “c:\hahah.txt” @echo %errorlevel% @pause 得到如下错误信息: ...
  • SQL注解实现机制,运用反射

    千次阅读 2022-03-30 18:12:52
    SQL 注解不适用于复杂情况,最好还是xml 获取sqlsession对象,拿到数据库配置 mapperInterface找到com.kuang.UserMapper(反射 得到包的全类名,通过类调用方法) methodCache 注解的核心就是反射 都有...
  • 内联注释 sql注释_SQL注释

    千次阅读 2020-08-03 00:27:20
    内联注释 sql注释A comment in any text which is ignored by the compiler and is not executed. It is used to convey some information to the user and used for documentation only, to describe the command's...
  • 如何批量删除SQL注释。。 这个,可能是用来干坏事的吧。不过有时候要做一些重构,也还是有用。嘿嘿 使用工具,notepad++,注意要选择正则表达式按钮才行。 【1】删除 /* */  /\*{1,2}[\s\S]*?\*/ 测试:...
  • 主要介绍了Spring Boot整合mybatis使用注解实现动态Sql、参数传递等常用操作(实现方法),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
  • 8 个答案:答案 0 :(得分:5)在PHP中,我使用此代码取消注释SQL:$sqlComments = '@(([\'"]).*?[^\\\]\2)|((?:\#|--).*?$|/\*(?:[^/*]|/(?!\*)|\*(?!/)|(?R))*\*\/)\s*|(?<=;)\s+@ms';/* Commented version$...
  • 一般的SQL Server建表时没有这个功能,但是他有扩展属性,这个功能也不错,可以把注释写到这里面,然后把相应的结果作为rs返回到页面进行应用。这种功能一般在动态显示数据库的table的列信息时比较常用。本文介绍了...
  • mybatisSql注解

    2018-12-24 17:46:44
    对于像 BlogMapper 这样的映射器类(Mapper class)来说,还有另一招来处理 package org.mybatis.example; public interface BlogMapper { @Select("SELECT * FROM blog WHERE...对于简单语句来说,注解使代码...
  • SQL注释

    千次阅读 2019-03-27 08:53:57
    SQL语句中的单行注释使用 -- create database database_x --创建数据库database_x 二、多行注释 SQL语句中的多行注释采用 /*…*/ create database database_x /* 创建一个数据库 名字叫做database_x */ ...
  • 测试函数代码:伪代码,我加了@Sql注解进行初始化 /** * 测试分页查询促销活动 * * @throws Exception */ @Test @Sql({"clean_promotion_activity.sql"}) public void testListByPage() throws Exception ...
  • 一开始引入注解,老是报错误,红色,发现是maven的包引入错误 <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper-core</artifactId> <version>1.0.4</...
  • BeetlSQL 注解

    千次阅读 2017-07-05 11:22:11
    对于自动生成的sql,默认不需要任何annotaton,类名对应于表名(通过NameConverstion类),getter方法的属性名对应于列明(也是通过NameConverstion类),但有些情况还是需要anntation。 7.1. @A
  • 修改表字段注释sql,更新字段内容的sql 修改表字段注释sql update 表名 modify column 列名 int comment ‘描述’; 更新字段内容的sql update 表名 set 列名=‘描述’ where 条件;
  • java工程,练习通过MyBatis注解的方式配置SQL映射器,实现动态SQL.
  • spring Boot注解SQL

    千次阅读 2018-12-19 18:04:23
    更多详细用法,可以参考mybatis中文网的专门介绍 ... 1、在我们写的动态sql前面添加@Seclect @Select("select * from d_technician") @Results(id = "techniciansMap", value = { ...
  • 我想用正则表达式匹配出sql文件中注释里的分号,哪位大神教教我。多谢 ```sql /* * 这是一段注释; * 这是注释; * 1111 ; --这还是注释 */ /*;*/ select 1 from dual -- /*11111;;;111*/ ; ;...
  • Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.builder.BuilderException: Error creating document instance.
  • MyBatis 之通用Mapper@KeySql注解详解

    千次阅读 2019-08-28 15:12:05
    https://blog.csdn.net/isea533/article/details/80040379
  • 每重装一次系统,或者重装一次idea,在...1.类的注释 Autuor 记得改成自己的。。 /** * @Auther: liuhua * @Date: ${DATE} ${HOUR}:${MINUTE} * @Description: */ 2.方法注释   在模板的格式里面...
  • 使用Java自定义注解来拼接SQL查询语句,方便使用。
  • 通用 Mapper @KeySql 注解 genId 方法详解

    万次阅读 2018-04-22 17:26:29
    为了方便使用全局主键(例如:Vesta ...@KeySql 注解增加了下面的方法: /** * Java 方式生成主键,可以和发号器一类的服务配合使用 * * @return */ Class&lt;? extends GenId&gt; genId() default Ge...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 424,008
精华内容 169,603
关键字:

sql注解

友情链接: LanguageSwitch-master.zip