mysql in语句在java中的使用
做权限的时候,通过role角色中的roleid,在auth权限中查找角色对应的权限。
sql语句:
SELECT authName from auth where authId in (1,2,3,4,5)
in后面的东西即是角色所具有的各个权限的id,可以查出1,2,3,4,5对应的权限名字。
于是结合auth表,直接使用,sql语句为:
SELECT authName from auth where authId in (SELECT authIds from role where roleId=1)
后面查出来的即是1,2,3,4,5这样的内容。实际中,这样会出错,并不能查出预料的结果。in后面的内容应该是("字段1",“字段2”,...),上面那种查出来的,应该是这种格式的 in ("1,2,3,4,5"),把1,2,3,4,5这五个当做一个字符串了。
然后在java代码中,可以避免这个问题,主要是因为java的string的拼接,可以方便地组装in后面括号里面的数据格式。
下面一段示例代码,就是达到想要的结果。
- public static void main(String[] args) throws Exception {
- // TODO Auto-generated method stub
- DbUtil dbUtil=new DbUtil();
- Connection connection=dbUtil.getCon();
- String hql="SELECT authIds from role where roleId=1";
- PreparedStatement preparedStatement2=connection.prepareStatement(hql);
- ResultSet resultSet2=preparedStatement2.executeQuery();
- String authid=null;
- while(resultSet2.next()){
- authid=resultSet2.getString("authIds");
- System.out.println("authids:"+resultSet2.getString("authIds"));
- }
- String sql="SELECT authName from auth where authId in ("+authid+")"; //拼接sql语句
- PreparedStatement preparedStatement=connection.prepareStatement(sql);
- ResultSet resultSet=preparedStatement.executeQuery();
- while(resultSet.next()){
- System.out.println("authname:"+resultSet.getString("authName"));
- }
- }
mysql in语句在java中的使用的更多相关文章
- mysql tinyint(1) 在java中被转化为boolean
数据库表字段类型为:tinyint 长度为1 在java中对应的类型是boolean 查询时直接在页面展示成true或false 如果是2,3,4 这样的也是默认成true,非常不友好. 解决方案: ...
- mysql将语句写入表中
使用create table语句即可 CREATE TABLE membertmp (select a.* from member as a where a.phone <> '' and ...
- java中的对象和类
1.类:类是一个模板,它描述一类对象的行为和状态. 一个类可以包含以下类型变量: 局部变量:在方法.构造方法或者语句块中定义的变量被称为局部变量.变量声明和初始化都是在方法中,方法结束后,变量就会自动 ...
- java中myeclipse连接mysql问题(java.lang.ClassNotFoundException: com.mysql.jdbc.Driver)
java中myeclipse连接mysql问题(java.lang.ClassNotFoundException: com.mysql.jdbc.Driver) 1.往项目中添加mysql-conne ...
- Java中sql语句的引号问题
1..sql语句 在数据库中,当我们查询语句时,会使用类似的语句: Select * from userinfo where userid='1' or 1; Select * from userin ...
- 第68节:Java中的MYSQL运用从小白到大牛
第68节:Java中的MYSQL运用从小白到大牛 前言 学习java必备要求,学会运用!!! 常见关系化数据库 BootStrap是轻量级开发响应式页面的框架,全局css组件,js插件.栅格系统是将页 ...
- Java中连接MySql数据库的例子
Java中连接MySql数据库的例子: package com.joinmysql.demo; import java.sql.DriverManager; import java.sql.Resul ...
- 【转】Java中try catch finally语句中含有return语句的执行情况(总结版)
Java中try catch finally语句中含有return语句的执行情况(总结版) 有一点可以肯定,finally块中的内容会先于try中的return语句执行,如果finall语句块中也有r ...
- Java中的可变参数以及foreach语句
Java中的可变参数的定义格式如下: 返回值类型 方法名称(类型 ... 参数名称){} foreach语句的格式如下: for ( 数据类型 变量名称 :数据名称){ ... } public ...
随机推荐
- 设置putty标题栏显示固定信息
设置好后,登录服务器后,发现标题栏又显示root@sit:/opt/ihome,没有显示成我设置的title内容.原因是: 在Terminal->Features中一定要勾选Disable re ...
- Y480&Y580 刷slic2.1全自动教程
由于之前时间赶,写得比较乱,现在我重新把我.安装UltraISO.2.插上一个U盘.3.用UltraISO打开setup98.img镜像4.在UltraISO的“启动”的下拉菜单里选择“写入硬盘镜像” ...
- 精《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #7 Cgroup、Namespace、Linux容器
HACK #7 Cgroup.Namespace.Linux容器 本节将介绍Cgroup与Namespace以及通过这两个功能实现的容器功能.CgroupCgroup(control group)是将 ...
- Back to CNBLOG
突然发现自己很久都没有写过博客了,感觉有点愧对程序员这个称号... 任重道远,要做的东西很多,越来发现,坚持是最难的,例如写博客. 但起码有有个开始,要有个开始去分享自己的经历,去让别人也知道,你是怎 ...
- vim删除行首数字
- ES6系列_2之新的声明方式
在ES5中我们在声明时只有一种方法,就是使用var来进行声明,ES6对声明的进行了扩展,现在可以有三种声明方式. (1)var:它是variable的简写,可以理解成变量的意思. (2)let:它在英 ...
- Java下LDAP操作的资料
话说LDAP真是个诡异的protocol(或者数据库,或者服务,whatever...),没有一个特别形象的spec.这里列出一些筛选出的还可以的文档,都是oracle的: https://docs. ...
- 用TImageList动态画透明图片
procedure TForm1.Button1Click(Sender: TObject); var bm : TBitmap; il : TImageList; begin bm := TBitm ...
- 经典的图像匹配算法----SIFT
经典的图像匹配算法----SIFT http://mp.weixin.qq.com/s?__biz=MzIzNDM2OTMzOQ==&mid=2247484319&idx=1& ...
- Why Go's Declaration Syntax is better than C++?
[Why Go's Declaration Syntax is better than C++?] Newcomers to Go wonder why the declaration syntax ...