如何将MyBatis查询结果映射到实体类实例的示例代码?
- 内容介绍
- 文章标签
- 相关推荐
本文共计917个文字,预计阅读时间需要4分钟。
近期,利用MyBatis进行一个简单查询,首先查看主要代码:
Service层代码:javapackage com.example.service;
import java.util.List;import org.apache.log4j.Logger;import org.springframework.beans.factory.annotation.Autowired;
public class UserService { private static final Logger logger=Logger.getLogger(UserService.class);
@Autowired private UserMapper userMapper;
public List getUsers() { logger.info(Fetching users from database); return userMapper.selectUsers(); }}
近期,利用mybatis做一个简单查询,先看主要代码:
Service层:
package com.example1.service; import java.util.List; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.example1.dao.OrderMapper; import com.example1.pojo.Order; @Service public class OrderService { private Logger log = Logger.getLogger(OrderService.class); @Autowired private OrderMapper orderMapper; public void findOrders() { List<Order> orders = orderMapper.findOrders(); for (Order order : orders) { log.info(order.getId() + " : " + order.getName()); } } }
dao层:
package com.example1.dao; import java.util.List; import com.example1.pojo.Order; public interface OrderMapper { public List<Order> findOrders(); }
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example1.dao.OrderMapper"> <select id="findOrders" parameterType="String" resultType="java.util.Map"> SELECT * FROM t_order </select> </mapper>
Order类:
package com.example1.pojo; public class Order { private String id; private String name; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Order [id=" + id + ", name=" + name + "]"; } }
配置妥当,执行,结果报错了:
java.lang.ClassCastException: java.util.HashMap cannot be cast to com.example1.pojo.Order
at com.example1.service.OrderService.findOrders(OrderService.java:26)
at com.example1.service.OrderService$$FastClassBySpringCGLIB$$b6b2c61a.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:717)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:653)
at com.example1.service.OrderService$$EnhancerBySpringCGLIB$$e285c4bb.findOrders(<generated>)
at com.example1.controller.OrderController.findOrders(OrderController.java:22)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:100)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:604)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:565)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
at javax.servlet.mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example1.dao.OrderMapper"> <select id="findOrders" parameterType="String" resultType="com.example1.pojo.Order"> SELECT * FROM t_order </select> </mapper>二、查询结果返回list,然后遍历list,将map转换成相应的java对象
修改后的Service层:
package com.example1.service; import java.util.List; import java.util.Map; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.example1.dao.OrderMapper; import com.example1.pojo.Order; @Service public class OrderService { private Logger log = Logger.getLogger(OrderService.class); @Autowired private OrderMapper orderMapper; public void findOrders() { List<Map> orders = orderMapper.findOrders(); for (Map orderMap : orders) { String orderJsonStr = JSONObject.toJSONString(orderMap); Order order = (Order) JSONArray.parseObject(orderJsonStr,Order.class); log.info(order.getId() + " : " + order.getName()); } } }
dao层:
package com.example1.dao; import java.util.List; import java.util.Map; public interface OrderMapper { public List<Map> findOrders(); }
其中,关于map转java对象的方法有好多种,具体可以参考本人另一篇文章:
www.jb51.net/article/190478.htm
以上两种方法均实际测试通过。到此这篇关于mybatis查询结果返回至实体类的示例代码的文章就介绍到这了,更多相关mybatis结果返回实体类内容请搜索易盾网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持易盾网络!
本文共计917个文字,预计阅读时间需要4分钟。
近期,利用MyBatis进行一个简单查询,首先查看主要代码:
Service层代码:javapackage com.example.service;
import java.util.List;import org.apache.log4j.Logger;import org.springframework.beans.factory.annotation.Autowired;
public class UserService { private static final Logger logger=Logger.getLogger(UserService.class);
@Autowired private UserMapper userMapper;
public List getUsers() { logger.info(Fetching users from database); return userMapper.selectUsers(); }}
近期,利用mybatis做一个简单查询,先看主要代码:
Service层:
package com.example1.service; import java.util.List; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.example1.dao.OrderMapper; import com.example1.pojo.Order; @Service public class OrderService { private Logger log = Logger.getLogger(OrderService.class); @Autowired private OrderMapper orderMapper; public void findOrders() { List<Order> orders = orderMapper.findOrders(); for (Order order : orders) { log.info(order.getId() + " : " + order.getName()); } } }
dao层:
package com.example1.dao; import java.util.List; import com.example1.pojo.Order; public interface OrderMapper { public List<Order> findOrders(); }
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example1.dao.OrderMapper"> <select id="findOrders" parameterType="String" resultType="java.util.Map"> SELECT * FROM t_order </select> </mapper>
Order类:
package com.example1.pojo; public class Order { private String id; private String name; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Order [id=" + id + ", name=" + name + "]"; } }
配置妥当,执行,结果报错了:
java.lang.ClassCastException: java.util.HashMap cannot be cast to com.example1.pojo.Order
at com.example1.service.OrderService.findOrders(OrderService.java:26)
at com.example1.service.OrderService$$FastClassBySpringCGLIB$$b6b2c61a.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:717)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:653)
at com.example1.service.OrderService$$EnhancerBySpringCGLIB$$e285c4bb.findOrders(<generated>)
at com.example1.controller.OrderController.findOrders(OrderController.java:22)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:100)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:604)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:565)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
at javax.servlet.mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example1.dao.OrderMapper"> <select id="findOrders" parameterType="String" resultType="com.example1.pojo.Order"> SELECT * FROM t_order </select> </mapper>二、查询结果返回list,然后遍历list,将map转换成相应的java对象
修改后的Service层:
package com.example1.service; import java.util.List; import java.util.Map; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.example1.dao.OrderMapper; import com.example1.pojo.Order; @Service public class OrderService { private Logger log = Logger.getLogger(OrderService.class); @Autowired private OrderMapper orderMapper; public void findOrders() { List<Map> orders = orderMapper.findOrders(); for (Map orderMap : orders) { String orderJsonStr = JSONObject.toJSONString(orderMap); Order order = (Order) JSONArray.parseObject(orderJsonStr,Order.class); log.info(order.getId() + " : " + order.getName()); } } }
dao层:
package com.example1.dao; import java.util.List; import java.util.Map; public interface OrderMapper { public List<Map> findOrders(); }
其中,关于map转java对象的方法有好多种,具体可以参考本人另一篇文章:
www.jb51.net/article/190478.htm
以上两种方法均实际测试通过。到此这篇关于mybatis查询结果返回至实体类的示例代码的文章就介绍到这了,更多相关mybatis结果返回实体类内容请搜索易盾网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持易盾网络!

