mybatis学习笔记(3)—数据库和bean名称不一样处理方案
【摘要】 之前写的mybatis对象的bean对象和数据库的对象名称是对应的,然而再实际开发的过程有很多不一一对应的情况。就需要解决。 bean对象:
package com.test.bean;
/*
* javabean 对象
*/
public class order {
private int id;
private String no;
private...
- 之前写的mybatis对象的bean对象和数据库的对象名称是对应的,然而再实际开发的过程有很多不一一对应的情况。就需要解决。
bean对象:
package com.test.bean;
/*
* javabean 对象
*/
public class order {
private int id;
private String no;
private float price;
public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getOrderNo() {
return no;
} public void setOrderNo(String orderNo) {
this.no = orderNo;
} public float getPrice() {
return price;
} public void setPrice(float price) {
this.price = price;
} @Override
public String toString() {
return "Order [id=" id ", orderNo=" no ", price=" price "]";
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
而mysql的对象为
再xml中的配置为:
-<mapper namespace="ordermapper">
<!-- 根据id查询得到一个order对象,使用这个查询是查询不到我们想要的结果的,这主要是因为实体类的属性名和数据库的字段名对应不上的原因,因此无法查询出对应的记录 -->
<select resultType="com.test.bean.order" parameterType="int" id="getorderbyid">select * from orders where order_id=#{id} </select>
<!-- 第一种方法根据id查询得到一个order对象,使用这个查询是可以正常查询到我们想要的结果的,这是因为我们将查询的字段名都起一个和实体类属性名相同的别名,这样实体类的属性名和查询结果中的字段名就可以一一对应上 -->
<select resultType="com.test.bean.order" parameterType="int" id="getorderbyid2">select order_id id,order_no no,order_price price from orders where order_id=#{id} </select>
<select parameterType="int" id="getorderbymap" resultMap="orderResultMap">select * from orders where order_id=#{id} </select>
-<resultMap id="orderResultMap" type="com.test.bean.order">
<!-- 用id属性来映射主键字段 -->
<id column="order_id" property="id"/>
<!-- 用result属性来映射非主键字段 -->
<result column="order_no" property="no"/>
<result column="order_price" property="price"/>
</resultMap>
<!-- 查询得到男性或女性的数量, 如果传入的是0就女性否则是男性 -->
<select id="getUserCount" statementType="CALLABLE" parameterMap="getUserCountMap">CALL mybits.ges_user_count(?,?) </select>
<!--parameterMap.put("sexid", 0);parameterMap.put("usercount", -1); --> -<parameterMap id="getUserCountMap" type="java.util.Map">
<parameter property="sexid" jdbcType="INTEGER" mode="IN"/>
<parameter property="usercount" jdbcType="INTEGER" mode="OUT"/>
</parameterMap>
</mapper>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
test实例(先封装一下)
import java.io.InputStream;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class returnsqlsession {
public static SqlSessionFactory getSqlSessionFactory()
{
String resource="conf.xml";
InputStream in=returnsqlsession.class.getClassLoader().getResourceAsStream(resource);
SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(in);
return factory;
}
public static SqlSession getSqlSession(){//返回sqlsession
return getSqlSessionFactory().openSession();
}
/**
* 获取SqlSession
* @param isAutoCommit * true 表示创建的SqlSession对象在执行完SQL之后会自动提交事务
* false 表示创建的SqlSession对象在执行完SQL之后不会自动提交事务,这时就需要我们手动调用sqlSession.commit()提交事务
* @return SqlSession
*/
public static SqlSession getSqlSession(boolean isAutoCommit) {
return getSqlSessionFactory().openSession(isAutoCommit);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import org.apache.ibatis.session.SqlSession;
import com.test.bean.order;
public class test1 { public static void testselect1() throws IOException
{
SqlSession sqlsession=returnsqlsession.getsqlsession(true);
//String statement="ordermapper.getorderbyid1";
//String statement="ordermapper.getorderbyid2";
String statement="ordermapper.getorderbymap";
order order=sqlsession.selectOne(statement, 2);
sqlsession.close();
System.out.println(order);
}
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
testselect1();
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
两种基本的解决方式,如果用到的较少,可以选择第一种,如果用到较多较复杂,可以选择第二种。
文章来源: bigsai.blog.csdn.net,作者:Big sai,版权归原作者所有,如需转载,请联系作者。
原文链接:bigsai.blog.csdn.net/article/details/82765281
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)