Spring整合mybatis
来源:互联网 发布:淘宝信用支付怎么开通 编辑:程序博客网 时间:2024/05/20 07:51
整合思路:
- SqlSessionFactory对象应该放到spring容器中作为单例存在。
- 传统dao的开发方式中,应该从spring容器中获得sqlsession对象。
- Mapper代理形式中,应该从spring容器中直接获得mapper的代理对象
- 数据库的连接以及数据库连接池事务管理都交给spring容器来完成
整合需要的jar包:
- spring的jar包
- mybatis的jar包
- spring+mybatis的整合包
- MySQL的数据库驱动jar包
- 数据库连接池的jar包
整合的步骤:
第一步:创建一个Java工程
第二步:导入jar包(上面提到的jar包)
第三步:mybatis的配置文件sqlMapConfig.xm.
第四步:编写spring的配置文件
1.数据库连接及连接池
2.事务管理(暂时可以不配置)
3.sqlSessionFactory对象,配置到spring容器中
4.mapper代理对象或者是dao实现类配置到spring容器中
第五步:编写dao或者mapper文件
第六步:测试
传统dao开发方式
sqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <!-- mappers:引入映射文件,可以引入多个映射文件 --> <mappers> <mapper resource="sqlMap/UserMapper.xml"/> </mappers></configuration>
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd"> <context:property-placeholder location="classpath:jdbc.properties"/> <!-- 一,数据源 连接数据库 --> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> <property name="url" value="${jdbc.url}"></property> <property name="driverClassName" value="${jdbc.driver}"></property> <property name="username" value="${jdbc.username}"></property> <property name="password" value="${jdbc.password}"></property> </bean> <!-- 二,工厂生产sqlSession --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <!-- 定义别名 --> <property name="typeAliasesPackage" value="com.demo.pojo"></property> <!-- 加载sqlMapperConfig --> <property name="configLocation" value="classpath:sqlMapConfig.xml"></property> </bean> <!-- 三,把工厂注入mapper层 --> <bean class="com.demo.mapper.impl.UserMapperImpl"> <property name="sqlSessionFactory" ref="sqlSessionFactory"></property> </bean></beans>
UserMapper.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!-- mapper:映射文件开始标签,所有sql语句都封装到mapper标签中 namespace:命名空间,唯一标识一个映射文件,名称可以自定义 特殊情况:如果是接口代理开发情况,namespace有特殊含义,不能自定义 如果是接口代理开发,namespace必须是接口全类路径名 --><mapper namespace="com.demo.mapper.UserMapper"> <!-- 查询所有用户数据 --> <select id="findAll" resultType="com.demo.pojo.User"> select * from user </select> <!-- 根据id查询用户数据 --> <select id="findUserWithId" parameterType="int" resultType="com.demo.pojo.User"> select * from user where id=#{id} </select></mapper>
User实体类
package com.demo.pojo;import java.util.Date;public class User { private Integer id; private String username; private Date birthday; private String sex; private String address; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "User [id=" + id + ", username=" + username + ", birthday=" + birthday + ", sex=" + sex + ", address=" + address + "]"; }}
UserMapper接口
package com.demo.mapper;import java.util.List;import com.demo.pojo.User;public interface UserMapper { public List<User> findAll(); public User findUserWithId(int id);}
UserMapperImpl实现类
package com.demo.mapper.impl;import java.util.List;import org.mybatis.spring.support.SqlSessionDaoSupport;import com.demo.mapper.UserMapper;import com.demo.pojo.User;public class UserMapperImpl extends SqlSessionDaoSupport implements UserMapper { String ns = "com.demo.mapper.UserMapper."; @Override public List<User> findAll() { List<User> list = this.getSqlSession().selectList(ns+"findAll"); return list; } @Override public User findUserWithId(int id) { User user = this.getSqlSession().selectOne(ns+"findUserWithId", id); return user; }}
测试
/** * 需求:spring整合mybatis测试 */@Testpublic void testSpringWithMybatis(){ //加载spring配置文件 ApplicationContext app = new ClassPathXmlApplicationContext("classpath:applicationContext.xml"); //获取接口对象 UserMapper userMapper = app.getBean(UserMapper.class); List<User> list = userMapper.findAll(); System.out.println(list);}
Mapper代理形式开发dao
sqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <!-- 如果在applicationContext.xml中配置了扫描包之后,就不需要在此配置mappers --> <!-- 将来可以在这里引入插件 --></configuration>
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd"> <context:property-placeholder location="classpath:jdbc.properties"/> <!-- 一,数据源 连接数据库 --> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> <property name="url" value="${jdbc.url}"></property> <property name="driverClassName" value="${jdbc.driver}"></property> <property name="username" value="${jdbc.username}"></property> <property name="password" value="${jdbc.password}"></property> </bean> <!-- 二,工厂生产sqlSession --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <!-- 定义别名 --> <property name="typeAliasesPackage" value="com.demo.pojo"></property> <!-- 加载sqlMapConfig --> <property name="configLocation" value="classpath:sqlMapConfig.xml"></property> </bean> <!-- 三,接口代理开发,直接使用mybatis整合spring包扫描接口代理开发所在包路径即可 --> <!-- 使用接口扫描代理开发方式:必须满足5条开发规范 1,映射文件namespace必须是接口全类路径名 2,映射文件sql语句id必须是接口方法名 3,映射文件和接口必须在同一个目录,且名称相同 4,映射文件接收参数类型必须和接口传递的参数类型一致 5,映射文件返回值类型必须和接口返回值类型一致 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.demo.mapper"></property> </bean></beans>
UserMapper.xml(与UserMapper在同一个目录,且名称相同)
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!-- mapper:映射文件开始标签,所有sql语句都封装到mapper标签中 namespace:命名空间,唯一标识一个映射文件,名称可以自定义 特殊情况:如果是接口代理开发情况,namespace有特殊含义,不能自定义 如果是接口代理开发,namespace必须是接口全类路径名 --><mapper namespace="com.demo.mapper.UserMapper"> <!-- 查询所有用户数据 --> <select id="findAll" resultType="com.demo.pojo.User"> select * from user </select> <!-- 根据id查询用户数据 --> <select id="findUserWithId" parameterType="int" resultType="com.demo.pojo.User"> select * from user where id=#{id} </select></mapper>
User实体类
略..
UserMapper接口
package com.demo.mapper;import java.util.List;import com.demo.pojo.User;public interface UserMapper { public List<User> findAll(); public User findUserWithId(int id);}
测试
@Testpublic void testSpringWithMybatis01(){ //加载spring配置文件 ApplicationContext app = new ClassPathXmlApplicationContext("classpath:applicationContext.xml"); //获取接口对象 UserMapper userMapper = app.getBean(UserMapper.class); List<User> list = userMapper.findAll(); System.out.println(list);}@Testpublic void testSpringWithMybatis02(){ //加载spring配置文件 ApplicationContext app = new ClassPathXmlApplicationContext("classpath:applicationContext.xml"); //获取接口对象 UserMapper userMapper = app.getBean(UserMapper.class); User user = userMapper.findUserWithId(32); System.out.println(user);}
阅读全文
0 0
- Mybatis -- Mybatis整合Spring
- 【Mybatis】Mybatis整合spring
- 【Spring+Mybatis】Spring整合Mybatis
- MyBatis-----2、MyBatis整合Spring
- Spring整合Mybatis
- spring整合myBatis
- MyBatis-Spring框架整合
- MyBatis+Spring整合示例
- MyBatis+Spring整合示例
- MyBatis+Spring整合方案
- spring + struts2 + mybatis整合
- Spring整合Mybatis
- Mybatis整合Spring
- Spring Mybatis 整合
- spring整合MyBatis
- Mybatis整合Spring
- MyBatis+Spring整合示例
- maven+spring+mybatis整合
- HTTP协议详解
- python学习—Day26—python的mysql操作
- VS2015+QT笔记1
- java实现记事本之Java记事本源码及实现
- python编程(一种自定义定时器的写法)
- Spring整合mybatis
- 企服三会 | 企服三会首发,洞见2018中国移动办公发展趋势
- 除了听大咖讲干货,我们的会议里还有这些东西!
- MySQL线上备份与恢复方案
- Shell编程基础
- HDU1090 1091 1092 个人对题目解读
- socket和小聊天室
- Tableau server安装报错:计算机中丢失api-ms-win-crt-runtime-l1-0.dll
- [分布式]事务处理的常见方法