您好,欢迎访问一九零五行业门户网

mybatis“集合嵌套查询”和“集合嵌套结果”两种方法实现数据库

两个实体类分别如下:user用户类和goods商品类。一个用户对应多个商品(一对多) package com.leo.entity;import java.util.list;public class user {private integer id;private string username;private integer age;private string address;private listg
两个实体类分别如下:user用户类和goods商品类。一个用户对应多个商品(一对多)
package com.leo.entity;import java.util.list;public class user { private integer id; private string username; private integer age; private string address; private list goodslist; public list getgoodslist() { return goodslist; } public void setgoodslist(list goodslist) { this.goodslist = goodslist; } public integer getid() { return id; } public void setid(integer id) { this.id = id; } public string getusername() { return username; } public void setusername(string username) { this.username = username; } public integer getage() { return age; } public void setage(integer age) { this.age = age; } public string getaddress() { return address; } public void setaddress(string address) { this.address = address; } public user() { super(); // todo auto-generated constructor stub } @override public string tostring() { return user [id= + id + , username= + username + , age= + age + , address= + address + , goodslist= + goodslist + ]; } }
goods商品类
package com.leo.entity;public class goods { private integer id; private string goodsname; private integer goodsnumber; private integer user_id; public integer getid() { return id; } public void setid(integer id) { this.id = id; } public string getgoodsname() { return goodsname; } public void setgoodsname(string goodsname) { this.goodsname = goodsname; } public integer getgoodsnumber() { return goodsnumber; } public void setgoodsnumber(integer goodsnumber) { this.goodsnumber = goodsnumber; } public integer getuser_id() { return user_id; } public void setuser_id(integer user_id) { this.user_id = user_id; } }
user实体类的mapper映射文件:userdao.xml
select u.id as u_id, u.username, u.age, u.address from user u where u.id =${value};
goods实体类的mapper映射文件:goodsdao.xml
select id,goodsname,goodsnumber,user_id from goods where user_id = #{value}
mabatis的环境配置文件mabatis-config.xml

测试的servlet(也可以用main函数测试)
package com.leo.servlet;import java.io.ioexception;import java.io.inputstream;import java.util.list;import javax.servlet.servletexception;import javax.servlet.annotation.webservlet;import javax.servlet.http.httpservlet;import javax.servlet.http.httpservletrequest;import javax.servlet.http.httpservletresponse;import org.apache.ibatis.io.resources;import org.apache.ibatis.session.resulthandler;import org.apache.ibatis.session.sqlsession;import org.apache.ibatis.session.sqlsessionfactory;import org.apache.ibatis.session.sqlsessionfactorybuilder;import com.leo.entity.goods;import com.leo.entity.user;import com.leo.mapper.goodsdao;import com.leo.mapper.userdao;/** * servlet implementation class mybatisservlet */@webservlet(/mybatisservlet)public class mybatisservlet extends httpservlet { private static final long serialversionuid = 1l; protected void doget(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { inputstream is = resources.getresourceasstream(com/leo/resources/mybatis-config.xml); sqlsessionfactory factory = new sqlsessionfactorybuilder().build(is); sqlsession session = factory.opensession(); // userdao ud = session.getmapper(userdao.class); goodsdao gd = session.getmapper(goodsdao.class); list goodslist= gd.selectgoodsforuser(1); // user user = ud.getuserinfobyid(1); // system.out.println(user);// list goodslist = user.getgoodslist(); for (goods goods : goodslist) { system.out.println(goods.getid()+ + goods.getgoodsname()+ +goods.getgoodsnumber()+ + goods.getuser_id()); } session.commit(); session.close(); } protected void dopost(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { doget(request, response); }}
以上是集合嵌套查询,还有一种方式是集合嵌套结果,这种方式只需要一个实体类文件即可,它是一种级联查询,自动完成的
下面用集合嵌套结果这种方式:
只需要改动userdao.xml,且只是用这一个映射文件就可以完成
select u.id as u_id, u.username, u.age, u.address, g.id as g_id, g.goodsname, g.goodsnumber, g.user_id from user u inner join goods g on u.id = g.user_id where u.id =${value};
希望可以帮到大家,有什么措辞不正确,希望得到指正,希望进步
其它类似信息

推荐信息