笔记要点&出错分析与总结

  POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans,
工程组织  

(AirportService为机场服务站接口,定义了 List<Airport> show();

package com03.service;

import com03.bean.Airport;
import org.apache.ibatis.annotations.Select; import java.util.List; public interface AirportService { List<Airport> show();
}

  AirportserviceImpl 是该接口的提供具体的实现类,重写接口的方法,并有get/set 方法

    public List<Airport> show() {
      return airportMapper.selectAll();
    }

package com03.service;

import com03.bean.Airport;
import com03.mapper.AirportMapper; import java.util.List; public class AirportServiceImpl implements AirportService{
private AirportMapper airportMapper;
@Override
public List<Airport> show() {
return airportMapper.selectAll();
} public AirportMapper getAirportMapper() {
return airportMapper;
} public void setAirportMapper(AirportMapper airportMapper) {
this.airportMapper = airportMapper;
}
}

  AirportMapper接口  实现从数据库查询信息返回List<Airport> )

package com03.mapper;
import com03.bean.Airport;
import org.apache.ibatis.annotations.Select;
import java.util.List;
public interface AirportMapper {
@Select("select * from airport")
public List<Airport> selectAll();
}

具体结构图,并1.导入mybatis所有jar 包 ,spring基本包spring-jdbc,spring-tx,spring-aop,spring-web,spring整合mybatis 的包等.

数据库组织

    id  airplane_no    time   price  takeoff_id  land_id
------ ----------- ------ ------ ---------- ---------
1 波音747 123 100 1 3
2 波音858 56 300 3 2

0.定义Bean类  Airport

package com03.bean;

public class Airport {
private int id;
private String portName;
private String cityName;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getPortName() {
return portName;
}
public void setPortName(String portName) {
this.portName = portName;
}
public String getCityName() {
return cityName;
}
public void setCityName(String cityName) {
this.cityName = cityName;
}
@Override
public String toString() {
return "Airport [id=" + id + ", portName=" + portName + ", cityName=" + cityName + "]";
}
}

1.定义接口 (见上面)
2.定义Spring的XML映射文件  applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--配置Mybatis的基本登陆信息,连接信息;除了事务方面的-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/ssm"></property>
<property name="username" value="root"></property>
<property name="password" value="123456"></property>
</bean>
<bean id="factory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!--扫描相当于mybatis.xml中的mapper的package标签; 扫描指定文件夹下的全部配置文件/接口,会自动为接口创建对象-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!--要扫描那个包-->
<property name="basePackage" value="com03.mapper"></property>
<!--和factory 产生关系-->
<property name="sqlSessionFactory" ref="factory"></property>
</bean>
<!--ref="airportMapper" ,上一步扫描完全局配置和接口文件后,会自动创建该bean-->
<!--由Spring -->
<bean id="airportService" class="com03.service.AirportServiceImpl">
<property name="airportMapper" ref="airportMapper"></property>
</bean>
</beans>

3.编写测试代码 test01   (配置文件不在默认的SRC下, 在 com03/conf/applicationContext.xml)

package com03.test;

import com03.bean.Airport;
import com03.service.AirportServiceImpl;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import java.util.List; public class test01 {
public static void main(String[] args) {
//创建Spring 容器 ,默认去根目录开始寻找
ApplicationContext ac=new ClassPathXmlApplicationContext("com03/conf/applicationContext.xml");
String[] names = ac.getBeanDefinitionNames();
for (String name:names
) {
System.out.println("★Spring自动创建了:"+" "+name);
}
AirportServiceImpl bean = ac.getBean("airportService", AirportServiceImpl.class);
List<Airport> list = bean.show();
System.out.println("★"+list);
}
}

测试结果

★Spring自动创建了:  dataSource
★Spring自动创建了: factory
★Spring自动创建了: org.mybatis.spring.mapper.MapperScannerConfigurer#0
★Spring自动创建了: airportService
★Spring自动创建了: airportMapper
★Spring自动创建了: org.springframework.context.annotation.internalConfigurationAnnotationProcessor
★Spring自动创建了: org.springframework.context.annotation.internalAutowiredAnnotationProcessor
★Spring自动创建了: org.springframework.context.annotation.internalRequiredAnnotationProcessor
★Spring自动创建了: org.springframework.context.annotation.internalCommonAnnotationProcessor
★Spring自动创建了: org.springframework.context.annotation.ConfigurationClassPostProcessor.importAwareProcessor
★Spring自动创建了: org.springframework.context.annotation.ConfigurationClassPostProcessor.enhancedConfigurationProcessor
DEBUG 12-08 10:44:15,527 JDBC Connection [com.mysql.jdbc.JDBC4Connection@399f45b1] will not be managed by Spring  (SpringManagedTransaction.java:87)
DEBUG 12-08 10:44:15,532 ==> Preparing: select * from airport (BaseJdbcLogger.java:139)
DEBUG 12-08 10:44:15,556 ==> Parameters: (BaseJdbcLogger.java:139)
DEBUG 12-08 10:44:15,572 <== Total: 3 (BaseJdbcLogger.java:139)
DEBUG 12-08 10:44:15,572 Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@3eb7fc54] (SqlSessionUtils.java:193)
DEBUG 12-08 10:44:15,572 Returning JDBC Connection to DataSource (DataSourceUtils.java:327)
★[Airport [id=1, portName=首都机场, cityName=北京], Airport [id=2, portName=南阳机场, cityName=南阳], Airport [id=3, portName=虹桥机场, cityName=上海]]

Spring4- 04-Spring简易整合Mybatis -导入jar包/ 正常编写pojo/ 编写spring 配置文件的更多相关文章

  1. spring+mybits 整合所需jar包的下载路径(亲测有效)

    1.spring jar包:http://repo.springsource.org/libs-release-local/org/springframework/spring/5.0.0.RELEA ...

  2. Spring Boot 整合mybatis时遇到的mapper接口不能注入的问题

    现实情况是这样的,因为在练习spring boot整合mybatis,所以自己新建了个项目做测试,可是在idea里面mapper接口注入报错,后来百度查询了下,把idea的注入等级设置为了warnin ...

  3. spring boot 整合 mybatis 以及原理

    同上一篇文章一样,spring boot 整合 mybatis过程中没有看见SqlSessionFactory,sqlsession(sqlsessionTemplate),就连在spring框架整合 ...

  4. Spring环境搭建之:导入jar包、配置文件名称及放置位置

    Spring环境搭建之:导入jar包.配置文件名称及放置位置 现在项目开发中spring框架应用的还是比较多的,自己用的还不太熟练,每次用的时候总配置半天,总有些配置弄错,就找个时间总结以下,方便以后 ...

  5. Spring Boot整合Mybatis并完成CRUD操作

    MyBatis 是一款优秀的持久层框架,被各大互联网公司使用,本文使用Spring Boot整合Mybatis,并完成CRUD操作. 为什么要使用Mybatis?我们需要掌握Mybatis吗? 说的官 ...

  6. Spring Boot整合Mybatis报错InstantiationException: tk.mybatis.mapper.provider.base.BaseSelectProvider

    Spring Boot整合Mybatis时一直报错 后来发现原来主配置类上的MapperScan导错了包 由于我使用了通用Mapper,所以应该导入通用mapper这个包

  7. ssm框架整合---maven工具来导入jar包

    ssm整合 一.导包(pom.xml文件) <?xml version="1.0" encoding="UTF-8"?> <project x ...

  8. Spring Boot系列(三):Spring Boot整合Mybatis源码解析

    一.Mybatis回顾 1.MyBatis介绍 Mybatis是一个半ORM框架,它使用简单的 XML 或注解用于配置和原始映射,将接口和Java的POJOs(普通的Java 对象)映射成数据库中的记 ...

  9. 太妙了!Spring boot 整合 Mybatis Druid,还能配置监控?

    Spring boot 整合 Mybatis Druid并配置监控 添加依赖 <!--druid--> <dependency> <groupId>com.alib ...

随机推荐

  1. Kubernetes Pod应用的滚动更新(八)

    一.环境准备 我们紧接上一节的环境,进行下面的操作,如果不清楚的,可以先查看上一篇博文. 滚动更新是一次只更新一小部分副本,成功后,再更新更多的副本,最终完成所有副本的更新.滚动更新的最大的好处是零停 ...

  2. snapde的批量数据运算公式

    一.snapde基本介绍 Snapde,一个专门为编辑超大型数据量CSV文件而设计的单机版电子表格软件:它能打开最大3G大小的CSV文件进行编辑:它运行的速度非常快,反应非常灵敏. 二.snapde批 ...

  3. 第6/7Beta冲刺

    1.团队成员 成员姓名 成员学号 秦裕航 201731062432(组长) 刘东 201731062227 张旭 201731062129 王伟 201731062214 2.SCRU部分 2.1各成 ...

  4. LeetCode 150. 逆波兰表达式求值(Evaluate Reverse Polish Notation) 24

    150. 逆波兰表达式求值 150. Evaluate Reverse Polish Notation 题目描述 根据逆波兰表示法,求表达式的值. 有效的运算符包括 +, -, *, /.每个运算对象 ...

  5. [转帖]Linux教程(20)- Linux中的Shell变量

    Linux教程(20)- Linux中的Shell变量 2018-08-24 11:30:16 钱婷婷 阅读数 37更多 分类专栏: Linux教程与操作 Linux教程与使用   版权声明:本文为博 ...

  6. Java连接数据库——最基础的方式

    JAVAWEB实现增删查改(图书信息管理)之Util类 Util.java  ↓ package BookSystem.Other; import java.sql.*; import java.ut ...

  7. python 之网络编程(基于TCP协议Socket通信的粘包问题及解决)

    8.4 粘包问题 粘包问题发生的原因: 1.发送端需要等缓冲区满才发送出去,造成粘包(发送数据时间间隔很短,数据了很小,会合到一起,产生粘包),这样接收端,就难于分辨出来了,必须提供科学的拆包机制. ...

  8. Linux忘记root密码操作方法

    此方法为:进入单用户模式,直接修改新密码覆盖掉以前的root密码. 操作步骤: 1.进入单用户模式 2.修改root密码 1.进入单用户方法: 1)启动Linux时,通过按上下键(其他键也可以)让Li ...

  9. 网页中插入Flash动画(.swf)代码和常用参数设置

    我们现在大部分人做网页,都是直接用DW插入flash,而且DW也是所见即所得,直接生成了相应的flash显示代码.可是我们又有多少人了解这些直接由DW生成的代码呢?其实我接触flash player标 ...

  10. python多线程爬取世纪佳缘女生资料并简单数据分析

    一. 目标 ​ 作为一只万年单身狗,一直很好奇女生找对象的时候都在想啥呢,这事也不好意思直接问身边的女生,不然别人还以为你要跟她表白啥的,况且工科出身的自己本来接触的女生就少,即使是挨个问遍,样本量也 ...