Spring4- 04-Spring简易整合Mybatis -导入jar包/ 正常编写pojo/ 编写spring 配置文件
笔记要点&出错分析与总结
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 配置文件的更多相关文章
- spring+mybits 整合所需jar包的下载路径(亲测有效)
1.spring jar包:http://repo.springsource.org/libs-release-local/org/springframework/spring/5.0.0.RELEA ...
- Spring Boot 整合mybatis时遇到的mapper接口不能注入的问题
现实情况是这样的,因为在练习spring boot整合mybatis,所以自己新建了个项目做测试,可是在idea里面mapper接口注入报错,后来百度查询了下,把idea的注入等级设置为了warnin ...
- spring boot 整合 mybatis 以及原理
同上一篇文章一样,spring boot 整合 mybatis过程中没有看见SqlSessionFactory,sqlsession(sqlsessionTemplate),就连在spring框架整合 ...
- Spring环境搭建之:导入jar包、配置文件名称及放置位置
Spring环境搭建之:导入jar包.配置文件名称及放置位置 现在项目开发中spring框架应用的还是比较多的,自己用的还不太熟练,每次用的时候总配置半天,总有些配置弄错,就找个时间总结以下,方便以后 ...
- Spring Boot整合Mybatis并完成CRUD操作
MyBatis 是一款优秀的持久层框架,被各大互联网公司使用,本文使用Spring Boot整合Mybatis,并完成CRUD操作. 为什么要使用Mybatis?我们需要掌握Mybatis吗? 说的官 ...
- Spring Boot整合Mybatis报错InstantiationException: tk.mybatis.mapper.provider.base.BaseSelectProvider
Spring Boot整合Mybatis时一直报错 后来发现原来主配置类上的MapperScan导错了包 由于我使用了通用Mapper,所以应该导入通用mapper这个包
- ssm框架整合---maven工具来导入jar包
ssm整合 一.导包(pom.xml文件) <?xml version="1.0" encoding="UTF-8"?> <project x ...
- Spring Boot系列(三):Spring Boot整合Mybatis源码解析
一.Mybatis回顾 1.MyBatis介绍 Mybatis是一个半ORM框架,它使用简单的 XML 或注解用于配置和原始映射,将接口和Java的POJOs(普通的Java 对象)映射成数据库中的记 ...
- 太妙了!Spring boot 整合 Mybatis Druid,还能配置监控?
Spring boot 整合 Mybatis Druid并配置监控 添加依赖 <!--druid--> <dependency> <groupId>com.alib ...
随机推荐
- Kubernetes Pod应用的滚动更新(八)
一.环境准备 我们紧接上一节的环境,进行下面的操作,如果不清楚的,可以先查看上一篇博文. 滚动更新是一次只更新一小部分副本,成功后,再更新更多的副本,最终完成所有副本的更新.滚动更新的最大的好处是零停 ...
- snapde的批量数据运算公式
一.snapde基本介绍 Snapde,一个专门为编辑超大型数据量CSV文件而设计的单机版电子表格软件:它能打开最大3G大小的CSV文件进行编辑:它运行的速度非常快,反应非常灵敏. 二.snapde批 ...
- 第6/7Beta冲刺
1.团队成员 成员姓名 成员学号 秦裕航 201731062432(组长) 刘东 201731062227 张旭 201731062129 王伟 201731062214 2.SCRU部分 2.1各成 ...
- LeetCode 150. 逆波兰表达式求值(Evaluate Reverse Polish Notation) 24
150. 逆波兰表达式求值 150. Evaluate Reverse Polish Notation 题目描述 根据逆波兰表示法,求表达式的值. 有效的运算符包括 +, -, *, /.每个运算对象 ...
- [转帖]Linux教程(20)- Linux中的Shell变量
Linux教程(20)- Linux中的Shell变量 2018-08-24 11:30:16 钱婷婷 阅读数 37更多 分类专栏: Linux教程与操作 Linux教程与使用 版权声明:本文为博 ...
- Java连接数据库——最基础的方式
JAVAWEB实现增删查改(图书信息管理)之Util类 Util.java ↓ package BookSystem.Other; import java.sql.*; import java.ut ...
- python 之网络编程(基于TCP协议Socket通信的粘包问题及解决)
8.4 粘包问题 粘包问题发生的原因: 1.发送端需要等缓冲区满才发送出去,造成粘包(发送数据时间间隔很短,数据了很小,会合到一起,产生粘包),这样接收端,就难于分辨出来了,必须提供科学的拆包机制. ...
- Linux忘记root密码操作方法
此方法为:进入单用户模式,直接修改新密码覆盖掉以前的root密码. 操作步骤: 1.进入单用户模式 2.修改root密码 1.进入单用户方法: 1)启动Linux时,通过按上下键(其他键也可以)让Li ...
- 网页中插入Flash动画(.swf)代码和常用参数设置
我们现在大部分人做网页,都是直接用DW插入flash,而且DW也是所见即所得,直接生成了相应的flash显示代码.可是我们又有多少人了解这些直接由DW生成的代码呢?其实我接触flash player标 ...
- python多线程爬取世纪佳缘女生资料并简单数据分析
一. 目标 作为一只万年单身狗,一直很好奇女生找对象的时候都在想啥呢,这事也不好意思直接问身边的女生,不然别人还以为你要跟她表白啥的,况且工科出身的自己本来接触的女生就少,即使是挨个问遍,样本量也 ...