基于java+play的相关数据库的查询和多表查询问题

来源:互联网 发布:网络政治参与图片 编辑:程序博客网 时间:2024/06/08 07:24

对于单表查询

因为play时基于无状态的mvc模式,一定要严格遵守

以用户登陆验证为例

1.1前端用ajax请求

function loginFunc(){
var uname = $('#uname').val();
    var upass = $('#upass').val();
$.ajax({
       type : "post",
       url: "/Login/userLogin",
       data:"uname=" + uname +"&upass="+ upass,
       datatype : "json",
    cache : true,
    async:true,
    success : function(data){
if(data == "1"){
window.location.href = "@{web.Cirrhosis.index1()}";
}else if(data== "2"){
alert("用户不存在");
}else{
alert("登录失败");
}
}
})
}
//后端处理前端请求

public static void userLogin(){
String uname =  params.get("uname");     // 获取ID
String upass = params.get("upass");   //获取密码
System.out.println("uname"+uname);
Users userinfo =  Users.find("uname=? AND delFlg ='1'", uname).first();  // 用户姓名和数据库 进行匹配
System.out.println(userinfo);
if(userinfo == null || userinfo.delFlg.equals("0")){
renderText("2");      //  用户名不存在
}else if(userinfo.upass.equals(upass)){  // 判用户
renderText("1");    // 登录成功
}else{
renderText("0");   // 登录失败
}
}

1.3查询一行数据

Users userinfo =  Users.find("uname=? AND delFlg ='1'", uname).first();  // 用户姓名和数据库 进行匹配

1.4查询多条数据

Users userinfo =  Users.find("uname=? AND delFlg ='1'", uname).fetch();  // 用户姓名和数据库 进行匹配

1.5新增表单信息具体

public static void newUser() {
String did = params.get("did");
String dname = params.get("dname");
String dperson = params.get("dperson");
Departmentm userinfo = Departmentm.find("did=? and delFlg='1'", did).first(); // delFlg 删除标识
if (userinfo != null) {
renderText("0"); // 用户名已存在
} else {
userinfo = new Departmentm(); // 新增用户
}
userinfo.did = did;
userinfo.dname = dname;
userinfo.dperson = dperson;
userinfo.delFlg = "1"; 
userinfo.save(); // 保存
renderText("1");
}

1.6 删除信息 采用的是假删除

public static void del() {
String sysID = params.get("sysID");

Departmentm card = Departmentm.find("sysID=? AND delFlg ='1' ", sysID).first();
if(card!=null){
card.delFlg = "0"; //假 删除
card.save(); // 保存
renderText("2"); // 删除成功
}else{
renderText("1"); // 不允许删除
}
}

1.7修改相应

2.1首先根据id查询出具体的相关信息

public static void editIndex() {
String did = params.get("did");
System.out.println("did"+did);
Departmentm biData = Departmentm.find("did=?", did).first();
System.out.println(biData);
render(biData);
}

2.1在页面中得到具体的信息 再修改

public static void reset() {
String did = params.get("did");
Departmentm info = Departmentm.find("did=? AND delFlg ='1'", did).first();
info.dname = params.get("dname"); // 部门名称
info.dperson = params.get("dperson");// 部门人数
info.save();
renderText("1");
}

前端统一的是ajax请求

最后就是多表查询

               String yangyu1 = params.get("yangyu1");
System.out.println("yangyu1"+yangyu1);
String sql="select users.*,cirrhosisr.* from users , cirrhosisr where users.sysID=cirrhosisr.brID and users.uname='杨宇'";
Query query=JPA.em().createNativeQuery(sql);
query.unwrap(SQLQuery.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
List<Map<String,String>>list=query.getResultList();
for(Map<String,String>map:list){
System.out.println("id = " );
}

//、、、、、、、、注意必须要转换成json格式
               Gson gson = new Gson();
String cardlst = gson.toJson(list);
cardlst= cardlst.replace("\"","'");
System.out.println(cardlst);
render(cardlst);
}

返回一个集合,前端进行接收,打印出相关数据!

 var showData = ${cardlst};

if(showData != null && showData != ""){
for(var i = 0; i < showData.length; i++){

showData[i].key=value//便利根据key得到value因为存储的方式是map键值对形式


0 0