数据库用
SELECT * FROM verycd.bbs_ip where addr="浙江省";
语句查询是没问题的
结果如下
8502 36.16.64.0 36.16.127.255 浙江省 电信
8507 36.17.0.0 36.17.63.255 浙江省 电信
8512 36.17.192.0 36.18.127.255 浙江省 电信
8518 36.19.32.0 36.19.127.255 浙江省 电信
8520 36.19.192.0 36.21.255.255 浙江省 电信
8551 36.22.128.0 36.22.255.255 浙江省 电信
Mybatis测试的时候明明用的是一样的语句,但是中间的两个IP却给本人返回了NULL,这是什么原理
USERMAPPER.XML
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- 为这个mapper指定一个唯一的namespace,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的 例如namespace="me.gacl.mapping.userMapper"就是me.gacl.mapping(包名)+userMapper(userMapper.xml文件去除后缀) --> <mapper namespace="mapping.userMapper"> <!-- 在select标签中编写查询的SQL语句, 设置select标签的id属性为getUser,id属性值必须是唯一的,不能够重复 使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型 resultType="me.gacl.domain.User"就表示将查询结果封装成一个User类的对象返回 User类就是users表所对应的实体类 --> <!-- 根据id查询得到一个user对象 --> <select id="getUser" resultType="crawlergzd.Ip"> select * from bbs_ip where addr="浙江省"; </select> </mapper>
输出的结果是这样的
247688nullnull移动浙江省
247690nullnull移动浙江省
248016nullnull移动浙江省
248031nullnull移动浙江省
248039nullnull移动浙江省
248043nullnull移动浙江省
248044nullnull移动IDC机房浙江省
248045nullnull移动浙江省
249368nullnull广电网浙江省
384433nullnull联通浙江省
384435nullnull联通浙江省
384437nullnull联通浙江省
384440nullnull联通浙江省
384455nullnull联通浙江省
384460nullnull联通浙江省
391586nullnull联通浙江省
真的很奇怪啊,为什么有的值正常输出了,但是有两个却返回了NULL?
解决方案
40
你把 USERMAPPER.XML 换成这样试试.
<mapper namespace="mapping.userMapper"> <resultMap type="crawlergzd.Ip" id="IpResult"> <id column="ID" javaType="INTEGER" property="id" /> <result column="IPSTART" javaType="VARCHAR" property="ipStart" /> <result column="IPEND" javaType="VARCHAR" property="ipEnd" /> <result column="OPERATOR" javaType="VARCHAR" property="operator" /> <result column="ADDR" javaType="VARCHAR" property="addr" /> </resultMap> <select id="getUser" resultType="IpResult"> select * from bbs_ip where addr="浙江省"; </select> </mapper>