个人学习历程之菜鸟初体验mybatis高级映射一对一查询
2017-04-22 21:14
435 查看
学习mybatis最闹心的莫过于sql语言了,这对于本人来说实在是个大大的痛楚啊,都说mybatis学起来简单,我觉得那都是些大牛才能说出的话,看来本人还得把数据库相关的知识拿来硬啃了。哎,进入今天的mybatis的历程了。。。
要学好数据库中表与表之间的关系,这得花时间去琢磨清楚,不幸的是本人还在摸索当中,只是探知了一小部分,只能从小的方面去研究了,这里只给出了四张表(够晕头转向一阵子了),分别为User,orders,orderdetail,items.
表的内容并不完善,有知道如何完善的大神请伸出您的手,望能指点指点小弟,在下感激不尽,等我练就神功定不忘指点之恩。
要一对一的查询,第一件事就得编写sql语句
此处的关联连接是用的内链接,因为外键关联的关系,通过外键查询出来的数据只有一条,所以此处可以使用内链接的方式进行关联。
算是把sql语句给写完了,现在就得来分析xml文件的配置了
id为唯一标识,parameterType为传入的参数类型,因为这里没有涉及到参数的传入,所以parameter可以不要;resultType为返回值类型,这个就很讲究了,因为普通的pojo是不能满足要求,所以这里得重新定义一个pojo类,里面的参数要和查询的数据想吻合,所以这个pojo可以继承一个参数较多的数据库对应类,把参数较少的那些数据手动的添加进去。这里写的是一个OrdersCustom类。
这样就把该有的数据全部包含进去了。对了,还有一个namespace没说到,这里的参数传入的是接口地址。
现在就写出接口类
里面提供了一个查询方法;
最后就来测试啦(感觉我要怀疑人生了,每次到测试的时间总是会出现一些莫名错误)
结果
log4j:WARN No appenders could be found for logger (org.apache.ibatis.logging.LogFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
[]
没有提示错误,每张表里没数据,mybatis高手请多多指教,本人还是一只小小菜鸟。。。如果能给点好的资料就更好了
要学好数据库中表与表之间的关系,这得花时间去琢磨清楚,不幸的是本人还在摸索当中,只是探知了一小部分,只能从小的方面去研究了,这里只给出了四张表(够晕头转向一阵子了),分别为User,orders,orderdetail,items.
CREATE TABLE orders( id INT(11) KEY AUTO_INCREMENT, user_id INT(11) NOT NULL, number VARCHAR(32), createtime DATETIME, note VARCHAR(100) ); CREATE TABLE orderdetail( id INT(11) KEY AUTO_INCREMENT, orders_id INT(11) NOT NULL, items_id INT(11), items_num INT(11) ); CREATE TABLE items( id INT(11) KEY AUTO_INCREMENT, NAME VARCHAR(32) NOT NULL, price FLOAT(10,1), detail TEXT, pic VARCHAR(512), createtime DATETIME );
表的内容并不完善,有知道如何完善的大神请伸出您的手,望能指点指点小弟,在下感激不尽,等我练就神功定不忘指点之恩。
要一对一的查询,第一件事就得编写sql语句
Select orders.*, user.username, user.sex, user.address from orders, user where orders.user_id=user.id
此处的关联连接是用的内链接,因为外键关联的关系,通过外键查询出来的数据只有一条,所以此处可以使用内链接的方式进行关联。
算是把sql语句给写完了,现在就得来分析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="com.itsky.day02.OrdersMapperCustom">
<select id="findOrdersUser" resultType="com.itsky.day02.OrdersCustom">
Select orders.*, user.username, user.sex, user.address from orders, user where orders.user_id=user.id
</select>
</mapper>
id为唯一标识,parameterType为传入的参数类型,因为这里没有涉及到参数的传入,所以parameter可以不要;resultType为返回值类型,这个就很讲究了,因为普通的pojo是不能满足要求,所以这里得重新定义一个pojo类,里面的参数要和查询的数据想吻合,所以这个pojo可以继承一个参数较多的数据库对应类,把参数较少的那些数据手动的添加进去。这里写的是一个OrdersCustom类。
public class OrdersCustom extends Orders{ private String username; private String sex; private String address; public String getUsername() { return username; }
这样就把该有的数据全部包含进去了。对了,还有一个namespace没说到,这里的参数传入的是接口地址。
现在就写出接口类
public interface OrdersMapperCustom { public List<OrdersCustom>findOrderUser(); }
里面提供了一个查询方法;
最后就来测试啦(感觉我要怀疑人生了,每次到测试的时间总是会出现一些莫名错误)
@Before public void setUp() throws Exception { // 1、读取配置文件 String resource = "applicationContext.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); // 2、根据配置文件创建SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } @Test public void testForFindOrdersUser() { SqlSession sqlSession=sqlSessionFactory.openSession(); OrdersMapperCustom ordersMapperCustom = sqlSession.getMapper(OrdersMapperCustom .class); List<OrdersCustom>list=ordersMapperCustom .findOrderUser(); System.out.println(list); }
结果
log4j:WARN No appenders could be found for logger (org.apache.ibatis.logging.LogFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
[]
没有提示错误,每张表里没数据,mybatis高手请多多指教,本人还是一只小小菜鸟。。。如果能给点好的资料就更好了
相关文章推荐
- mybatis学习之高级映射中的一对一查询
- Mybatis学习(07)-高级映射之一对一查询
- 【MyBatis学习08】高级映射之一对一查询
- 【MyBatis学习08】高级映射之一对一查询
- 【MyBatis学习08】高级映射之一对一查询
- 【MyBatis学习08】高级映射之一对一查询
- 【MyBatis学习08】高级映射之一对一查询
- 【MyBatis学习10】高级映射之多对多查询
- 【MyBatis框架】高级映射-一对一查询
- 框架学习系列 mybatis 第十八篇 高级结果一对一结果映射之resultMap的使用
- 【MyBatis框架】高级映射-一对一查询
- 【mybatis基础】高级映射:一对一查询
- 【MyBatis学习10】高级映射之多对多查询
- 【MyBatis学习09】高级映射之一对多查询
- 【MyBatis学习10】高级映射之多对多查询
- mybatis高级输出映射(一对一查询输出映射)
- Mybatis学习总结(六)——高级映射(一对一,一对多,多对多)
- MyBatis学习(一)之一对一关联映射查询
- mybatis高级结果映射学习之一对一映射(六)
- 【MyBatis学习09】高级映射之一对多查询