mybatis基础(下)
- mybatis和spring整合
- 需要spring通过单例方式管理SqlSessionFactory
- spring和mybatis整合生成代理对象,使用SqlSessionFactory创建SqlSession
- 持久层的mapper都需要由spring进行管理
- 需要导入的jar包
- 需要建立的文件
- 需要建立的包
- 在applicationContext.xml配置sqlSessionFactory
- 创建applicationContext.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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 加载配置文件 -->
<context:property-placeholder location="classpath:db.properties"/>
<!-- 数据源,使用dbcp -->
<!--
driverClassName:
url:
username:
password:
maxActive:
maxIdle:
-->
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<!--<property name="maxActive" value="10"/>-->
<property name="maxIdle" value="5"/>
</bean>
<!-- 配置SqlSessionFactory -->
<!--
class:设置为mybatis-spring.jar中的类
id:唯一表示标识
-->
<bean id="SqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 加载mybatis的配置文件 -->
<property name="configLocation" value="mybatis/SqlMapConfig.xml"/>
<!-- 加载数据源 -->
<property name="dataSource" ref="dataSource"/> </bean>
</beans>
- 创建applicationContext.xml
- 整合代码及其bug
- 若报找不到org.springframework.dao.support.DaoSupport的类文件
- 导入spring-tx-4.3.5.RELEASE.jar
若报java.lang.ClassNotFoundException: org.apache.commons.pool2.PooledObjectFactory
- 导入commons-pool2-2.6.1.jar
若报java.lang.NoClassDefFoundError: org/springframework/aop/support/AopUtils
- 导入spring-aop-4.3.5.RELEASE.jar
- 若报nested exception is java.lang.NoClassDefFoundError: org/springframework/jdbc/datasource/TransactionAwareDataSourceProxy
- 导入spring-jdbc-4.3.5.RELEASE.jar
- 原生dao
/**
* dao接口实现类需要注入SqlSessionFactory,通过spring进行注入
* 这里通过spring声明配置方式,配置dao的bean
*/
public interface UserDao { public abstract List<User> selectAllUser(); } /**
* UserDao的实现类
*/
public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao { @Override
public List<User> selectAllUser() {
//继承SqlSessionDaoSupport,通过this.getSqlSession()得到sqlSession
SqlSession connection = this.getSqlSession();
List<User> users = connection.selectList("user.selectAllUser"); //方法结束就自动关闭,所以不需要close();
//connection.close();
return users;
}
} <!-- 在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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 加载配置文件 -->
<context:property-placeholder location="classpath:db.properties"/>
<!-- 数据源,使用dbcp -->
<!--
driverClassName:
url:
username:
password:
maxActive:
maxIdle:
-->
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<!--<property name="maxActive" value="10"/>-->
<property name="maxIdle" value="5"/>
</bean>
<!-- 配置SqlSessionFactory -->
<!--
class:设置为mybatis-spring.jar中的类
id:唯一表示标识
-->
<bean id="SqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 加载mybatis的配置文件 -->
<property name="configLocation" value="mybatis/SqlMapConfig.xml"/>
<!-- 加载数据源 -->
<property name="dataSource" ref="dataSource"/> </bean> <!-- 原始dao接口 -->
<bean id="userDao" class="cn.muriel.ssm.dao.impl.UserDaoImpl">
<property name="sqlSessionFactory" ref="SqlSessionFactory"/>
</bean> </beans> <!-- 在userMapper.xml配置 --> <?xml version="1.0" encoding="UTF-8" ?>
<!-- 此时您可能想知道SqlSession或Mapper类究竟执行了什么。
MyBatis提供的全套功能可以通过使用多年来MyBatis流行的基于XML的映射语言来实现。
如果您以前使用过MyBatis,那么您将很熟悉这个概念,但是对XML映射文档进行了大量改进,以后会很清楚。 -->
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace命名空间。作用对sql进行分类化管理,理解sql隔离
注意:使用mapper代理方法开发,namespace有特殊重要的作用 -->
<mapper namespace="cn.muriel.ssm.dao.UserDao"> <select id="selectAllUser" resultType="cn.muriel.mybatis.po.User"> select * from user </select>
</mapper> <!-- 测试 -->
public class TestUtil { private static ApplicationContext applicationContext; //在setUp这个方法得到spring容器
public static void main(String[] args) { applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml"); UserDao userDao = (UserDao) applicationContext.getBean("userDao");
JSONArray sendJson = JSONArray.fromObject(userDao.selectAllUser());
System.out.println(sendJson + ""); }
} - 代理mapper
/**
* dao接口实现类需要注入SqlSessionFactory,通过spring进行注入
* 这里通过spring声明配置方式,配置dao的bean
*/
public interface UserMapper { public abstract List<User> selectAllUser(); } /**
* UserDao的实现类
*/
public class UserDaoImpl extends SqlSessionDaoSupport implements UserMapper { @Override
public List<User> selectAllUser() {
//继承SqlSessionDaoSupport,通过this.getSqlSession()得到sqlSession
SqlSession connection = this.getSqlSession();
List<User> users = connection.selectList("user.selectAllUser"); //方法结束就自动关闭,所以不需要close();
//connection.close();
return users;
}
} <!-- 在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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 加载配置文件 -->
<context:property-placeholder location="classpath:db.properties"/>
<!-- 数据源,使用dbcp -->
<!--
driverClassName:
url:
username:
password:
maxActive:
maxIdle:
-->
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<!--<property name="maxActive" value="10"/>-->
<property name="maxIdle" value="5"/>
</bean>
<!-- 配置SqlSessionFactory -->
<!--
class:设置为mybatis-spring.jar中的类
id:唯一表示标识
-->
<bean id="SqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 加载mybatis的配置文件 -->
<property name="configLocation" value="mybatis/SqlMapConfig.xml"/>
<!-- 加载数据源 -->
<property name="dataSource" ref="dataSource"/> </bean> <!-- mapper配置 -->
<!--
class为mybatis-spring.jar下的类
MapperFactoryBean:根据mapper接口生成代理对象
-->
<!-- UserMapper.java和userMapper.xml在同一个包下 -->
<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="mapperInterface" value="cn.muriel.ssm.mapper.UserMapper"/>
<!-- 若ref改为value,则报ConversionNotSupportedException -->
<property name="sqlSessionFactory" rel="SqlSessionFactory"/>
</bean> </beans> <!-- 在userMapper.xml配置 --> <?xml version="1.0" encoding="UTF-8" ?>
<!-- 此时您可能想知道SqlSession或Mapper类究竟执行了什么。
MyBatis提供的全套功能可以通过使用多年来MyBatis流行的基于XML的映射语言来实现。
如果您以前使用过MyBatis,那么您将很熟悉这个概念,但是对XML映射文档进行了大量改进,以后会很清楚。 -->
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace命名空间。作用对sql进行分类化管理,理解sql隔离
注意:使用mapper代理方法开发,namespace有特殊重要的作用 -->
<mapper namespace="cn.muriel.ssm.mapper.UserMapper"> <select id="selectAllUser" resultType="cn.muriel.mybatis.po.User"> select * from user </select>
</mapper> <!-- 测试 -->
public class TestUtil { private static ApplicationContext applicationContext; //在setUp这个方法得到spring容器
public static void main(String[] args) { applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml"); UserMapper userMapper = (UserMapper) applicationContext.getBean("userMapper");
JSONArray sendJson = JSONArray.fromObject(userMapper.selectAllUser());
System.out.println(sendJson + ""); }
} - mapper的扫描配置
/**
* dao接口实现类需要注入SqlSessionFactory,通过spring进行注入
* 这里通过spring声明配置方式,配置dao的bean
*/
public interface UserMapper { public abstract List<User> selectAllUser(); } /**
* UserDao的实现类
*/
public class UserDaoImpl extends SqlSessionDaoSupport implements UserMapper { @Override
public List<User> selectAllUser() {
//继承SqlSessionDaoSupport,通过this.getSqlSession()得到sqlSession
SqlSession connection = this.getSqlSession();
List<User> users = connection.selectList("user.selectAllUser"); //方法结束就自动关闭,所以不需要close();
//connection.close();
return users;
}
} <!-- 在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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 加载配置文件 -->
<context:property-placeholder location="classpath:db.properties"/>
<!-- 数据源,使用dbcp -->
<!--
driverClassName:
url:
username:
password:
maxActive:
maxIdle:
-->
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<!--<property name="maxActive" value="10"/>-->
<property name="maxIdle" value="5"/>
</bean>
<!-- 配置SqlSessionFactory -->
<!--
class:设置为mybatis-spring.jar中的类
id:唯一表示标识
-->
<bean id="SqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 加载mybatis的配置文件 -->
<property name="configLocation" value="mybatis/SqlMapConfig.xml"/>
<!-- 加载数据源 -->
<property name="dataSource" ref="dataSource"/> </bean> <!-- mapper批量扫描,从mapper包中扫描出mapper接口,自动创 建代理对象并且在spring容器中注册 -->
<!-- 自动扫描出来的mapper的bean的id为mapper类名(首字母小写) -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!--
指定扫描的包名
指定mapper接口的包名,mybatis自动扫描包下边所以mapper接口进行加载
遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中
如果扫描多个包,每个包中间使用逗号分隔
-->
<property name="basePackage" value="cn.muriel.ssm.mapper"/>
<!-- 数据源 -->
<property name="sqlSessionFactoryBeanName" value="SqlSessionFactory"/>
</bean> </beans> <!-- 在userMapper.xml配置 --> <?xml version="1.0" encoding="UTF-8" ?>
<!-- 此时您可能想知道SqlSession或Mapper类究竟执行了什么。
MyBatis提供的全套功能可以通过使用多年来MyBatis流行的基于XML的映射语言来实现。
如果您以前使用过MyBatis,那么您将很熟悉这个概念,但是对XML映射文档进行了大量改进,以后会很清楚。 -->
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace命名空间。作用对sql进行分类化管理,理解sql隔离
注意:使用mapper代理方法开发,namespace有特殊重要的作用 -->
<mapper namespace="cn.muriel.ssm.mapper.UserMapper"> <select id="selectAllUser" resultType="cn.muriel.mybatis.po.User"> select * from user </select>
</mapper> <!-- 测试 -->
public class TestUtil { private static ApplicationContext applicationContext; //在setUp这个方法得到spring容器
public static void main(String[] args) { applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml"); UserMapper userMapper = (UserMapper) applicationContext.getBean("userMapper");
JSONArray sendJson = JSONArray.fromObject(userMapper.selectAllUser());
System.out.println(sendJson + ""); }
}
- 若报找不到org.springframework.dao.support.DaoSupport的类文件
- 需要建立的文件
mybatis基础(下)的更多相关文章
- myBatis 基础测试 表关联关系配置 集合 测试
myBatis 基础测试 表关联关系配置 集合 测试 测试myelipse项目源码 sql 下载 http://download.csdn.net/detail/liangrui1988/599388 ...
- JAVA之Mybatis基础入门--框架搭建与简单查询
JAVA中,操作数据库有JDBC.hibernate.Mybatis等技术,今天整理了下,来讲一讲下Mybatis.也为自己整理下文档: hibernate是一个完全的ORM框架,是完全面向对象的.但 ...
- mybatis基础系列(四)——关联查询、延迟加载、一级缓存与二级缓存
关本文是Mybatis基础系列的第四篇文章,点击下面链接可以查看前面的文章: mybatis基础系列(三)——动态sql mybatis基础系列(二)——基础语法.别名.输入映射.输出映射 mybat ...
- mybatis基础系列(三)——动态sql
本文是Mybatis基础系列的第三篇文章,点击下面链接可以查看前面的文章: mybatis基础系列(二)--基础语法.别名.输入映射.输出映射 mybatis基础系列(一)--mybatis入门 动态 ...
- mybatis基础系列(二)——基础语法、别名、输入映射、输出映射
增删改查 mapper根节点及其子节点 mybatis框架需要读取映射文件创建会话工厂,映射文件是以<mapper>作为根节点,在根节点中支持9个元素,分别为insert.update.d ...
- mybatis基础系列(一)——mybatis入门
好久不发博客了,写博文的一个好处是能让心静下来,整理下之前学习过的一些知识一起分享,大神路过~ mybatis简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射. ...
- MyBatis基础入门《十七》动态SQL
MyBatis基础入门<十七>动态SQL 描述: >> 完成多条件查询等逻辑实现 >> 用于实现动态SQL的元素主要有: > if > trim > ...
- MyBatis基础入门《十六》缓存
MyBatis基础入门<十六>缓存 >> 一级缓存 >> 二级缓存 >> MyBatis的全局cache配置 >> 在Mapper XML文 ...
- MyBatis基础入门《十四》ResultMap子元素(association )
MyBatis基础入门<十四>ResultMap子元素(association ) 1. id: >> 一般对应数据库中改行的主键ID,设置此项可以提高Mybatis的性能 2 ...
- MyBatis基础入门《三》Select查询集合
MyBatis基础入门<三>Select查询集合 描述: 代码新增了一个MybatisUtil工具类,查询数据库返回集合的时候,接收数据的三种方式.由于代码会渐渐增多,未涉及改动过的文件不 ...
随机推荐
- 总结css
一.背景 1. background-color: 背景颜色 2.background-image 设置图像为背景 url("http://images.cnblogs.com/cnb ...
- unittest中常用的几个断言
a.相等 (a==b)内容一样,类型一致 from init import * import unittest class Baidu_Title(Info): def test_baidu_titl ...
- 【安富莱】【RL-TCPnet网络教程】第10章 RL-TCPnet网络协议栈移植(FreeRTOS)
第10章 RL-TCPnet网络协议栈移植(FreeRTOS) 本章教程为大家讲解RL-TCPnet网络协议栈的FreeRTOS操作系统移植方式,学习了第6章讲解的底层驱动接口函数之后,移植就 ...
- win7系统下dos界面无法自由调整大小
刚开始在win7系统,在dos界面下做MySQL的实验,很多数据不能显示界面上,只能显示固定的大小,以为这是系统的原因,后来在网上查找了一些资料.终于发现可以自由调节dos界面大小的方法.下面给出截图 ...
- HTTP 400 错误 - 请求无效 (Bad request)
在ajax请求后台数据时有时会报 HTTP 400 错误 - 请求无效 (Bad request);出现这个请求无效报错说明请求没有进入到后台服务里: 原因:1)前端提交数据的字段名称或者是字段类型和 ...
- WebSocket(4)---实现定时推送比特币交易信息
实现定时推送比特币交易信息 实现功能:跟虚拟币交易所一样,时时更新当前比特币的价格,最高价,最低价,买一价等等...... 提示:(1)本篇博客是在上一遍基础上搭建,上一篇博客地址:[WebSocke ...
- 免费SSL证书(支持1.0、1.1、1.2)
由于公司要开发微信小程序,而微信小程序的接口需要https协议的,并且要支持TLS1.0.TLS1.1.TLS1.2.如果仅仅是为了开发小程序,安全等级又不用太高,可以选择免费的SSL证书 在这里选择 ...
- webpack 2 系列
webpack 2 系列 webpack 是一个强大的工具,学会通过工具来解决开发效率问题,是每一个 工程师都必备的技能之一. 那么我们来从零开始搭建一个 基于webpack 2 到 开发架子,来提升 ...
- Solr 08 - 在Solr Web管理页面中查询索引数据 (Solr中各类查询参数的使用方法)
目录 1 Solr管理页面的查询入口 2 Solr查询输入框简介 3 Solr管理页面的查询方案 1 Solr管理页面的查询入口 选中需要查询的SolrCore, 然后在菜单栏选择[Query]: 2 ...
- Gulp介绍与入门实践
Gulp,一个基于流的构建工具. 这是自己写的一个构建的demo,只是一个纯演示的示例,并没有完成什么项目工作.下面根据这个demo介绍一下Gulp. 上代码: gulpfile.js 'use st ...