javaee论坛

普通会员

225648

帖子

334

回复

348

积分

楼主
发表于 2019-10-30 09:48:53 | 查看: 468 | 回复: 1

而mysql的对象为再xml中的配置为:

-<mappernamespace="ordermapper"><!--根据id查询得到一个order对象,使用这个查询是查询不到我们想要的结果的,这主要是因为实体类的属性名和数据库的字段名对应不上的原因,因此无法查询出对应的记录--><selectresultType="com.test.bean.order"parameterType="int"id="getorderbyid">select*fromorderswhereorder_id=#{id}</select><!--第一种方法根据id查询得到一个order对象,使用这个查询是可以正常查询到我们想要的结果的,这是因为我们将查询的字段名都起一个和实体类属性名相同的别名,这样实体类的属性名和查询结果中的字段名就可以一一对应上--><selectresultType="com.test.bean.order"parameterType="int"id="getorderbyid2">selectorder_idid,order_nono,order_pricepricefromorderswhereorder_id=#{id}</select><selectparameterType="int"id="getorderbymap"resultMap="orderResultMap">select*fromorderswhereorder_id=#{id}</select>-<resultMapid="orderResultMap"type="com.test.bean.order"><!--用id属性来映射主键字段--><idcolumn="order_id"property="id"/><!--用result属性来映射非主键字段--><resultcolumn="order_no"property="no"/><resultcolumn="order_price"property="price"/></resultMap><!--查询得到男性或女性的数量,如果传入的是0就女性否则是男性--><selectid="getUserCount"statementType="CALLABLE"parameterMap="getUserCountMap">CALLmybits.ges_user_count(?,?)</select><!--parameterMap.put("sexid",0);parameterMap.put("usercount",-1);-->-<parameterMapid="getUserCountMap"type="java.util.Map"><parameterproperty="sexid"jdbcType="INTEGER"mode="IN"/><parameterproperty="usercount"jdbcType="INTEGER"mode="OUT"/></parameterMap></mapper>

test实例(先封装一下)

importjava.io.InputStream;importorg.apache.ibatis.session.SqlSession;importorg.apache.ibatis.session.SqlSessionFactory;importorg.apache.ibatis.session.SqlSessionFactoryBuilder;publicclassreturnsqlsession{publicstaticSqlSessionFactorygetSqlSessionFactory(){Stringresource="conf.xml";InputStreamin=returnsqlsession.class.getClassLoader().getResourceAsStream(resource);SqlSessionFactoryfactory=newSqlSessionFactoryBuilder().build(in);returnfactory;}publicstaticSqlSessiongetSqlSession(){//返回sqlsessionreturngetSqlSessionFactory().openSession();}/***获取SqlSession*@paramisAutoCommit*true表示创建的SqlSession对象在执行完SQL之后会自动提交事务*false表示创建的SqlSession对象在执行完SQL之后不会自动提交事务,这时就需要我们手动调用sqlSession.commit()提交事务*@returnSqlSession*/publicstaticSqlSessiongetSqlSession(booleanisAutoCommit){returngetSqlSessionFactory().openSession(isAutoCommit);}}importjava.io.IOException;importjava.util.HashMap;importjava.util.Map;importorg.apache.ibatis.session.SqlSession;importcom.test.bean.order;publicclasstest1{publicstaticvoidtestselect1()throwsIOException{SqlSessionsqlsession=returnsqlsession.getsqlsession(true);//Stringstatement="ordermapper.getorderbyid1";//Stringstatement="ordermapper.getorderbyid2";Stringstatement="ordermapper.getorderbymap";orderorder=sqlsession.selectOne(statement,2);sqlsession.close();System.out.println(order);}publicstaticvoidmain(String[]args)throwsIOException{//TODOAuto-generatedmethodstubtestselect1();}}

两种基本的解决方式,如果用到的较少,可以选择第一种,如果用到较多较复杂,可以选择第二种。


普通会员

0

帖子

336

回复

351

积分
沙发
发表于 2019-10-31 20:31:24

我最喜欢回复人少的贴子了,如果贴子沉了,我就会觉得是自己弄沉的,非常有成就感!如果贴子火了,那我有占了前排,这简直是稳赚不赔的生意嘛

您需要登录后才可以回帖 登录 | 立即注册

触屏版| 电脑版

技术支持 历史网 V2.0 © 2016-2017