spring集成mybatis
来源:互联网 发布:学琴屋软件怎么样 编辑:程序博客网 时间:2024/05/19 18:44
Spring集成MyBatis (方式一 使用Mapper映射器)
step1.导包。
spring-webmvc,mybatis,mybatis-spring,spring-jdbc
ojdbc,dbcp,junit。step2.添加Spring配置文件
MyBatis配置文件的内容变成了一个bean
(SqlSessionFactoryBean)
<util:properties id="db" location="classpath:db.properties"/> <!-- 配置数据库连接池 --> <bean id="ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="#{db.driver}"/> <property name="url" value="#{db.url}"/> <property name="username" value="#{db.user}"/> <property name="password" value="#{db.pwd}"/> </bean> <!-- 配置SqlSessionFactoryBean --> <!-- 该bean的作用是用来代替MyBatis配置文件 --> <bean class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 指定连接池 --> <property name="dataSource" ref="ds"/> <!-- 指定映射文件位置 --> <property name="mapperLocations" value="classpath:entity/*.xml"/> </bean> <!-- 配置MapperScannerConfigurer --> <!-- 该bean会扫描指定包及其子包下面的所有的Mapper 映射器(接口),然后生成符合该接口要求的对象 (通过调用SqlSession的getMapper方法),接下来, 会将这些对象(即Mapper映射器的实现对象)添加到 Spring容器里面(默认的id是首字母小写之后的接口名)。 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- 指定要扫描的包 --> <property name="basePackage" value="dao"/> <!-- 指定只扫描带有该注解的接口 --> <property name="annotationClass" value="annotations.MyBatisRepository"/> </bean> </beans>
step3.实体类
step4.映射文件
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd"><mapper namespace="dao.EmployeeDAO"> <!-- id:每一条sql语句都有唯一的id,称之为sqlId。 parameterType:参数类型(如果是类,要写全限定名) --> <insert id="save" parameterType="entity.Employee"> INSERT INTO t_emp VALUES(t_emp_seq.nextval, #{ename},#{salary},#{age}) </insert> <!-- resultType: 返回类型(如果是类,要写全限定名) --> <select id="findAll" resultType="entity.Employee"> SELECT * FROM t_emp </select> <!-- 返回Map类型的结果 --> <!-- map是java.util.Map的简写形式。 --> <select id="findById2" parameterType="int" resultType="map"> SELECT * FROM t_emp WHERE id = #{id1} </select> <!-- 设置字段名与实体类的属性名的对应关系。 只需要将不一致的列出来。 --> <resultMap type="entity.Emp2" id="empResultMap"> <result property="empNo" column="id"/> <result property="name" column="ename"/> </resultMap> <select id="findById3" parameterType="int" resultMap="empResultMap"> SELECT * FROM t_emp WHERE id = #{id1} </select> </mapper>
step5.Mapper映射器
和映射文件相对应的接口step6.配置MapperScannerConfigurer
该bean会扫描指定包及其子包下面的所有的Mapper映射器(接口),会调用SqlSession的getMapper方法返回Mapper映射器的实现对象,并且将这些对象添加到Spring容器里面。(默认的id是首字母小写之后的接口名)。
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- 指定要扫描的包 --> <property name="basePackage" value="dao"/> <!-- 指定只扫描带有该注解的接口 --> <property name="annotationClass" value="annotations.MyBatisRepository"/> </bean>
只扫描带有特定注解的Mapper映射器
step1.开发一个注解。
package annotations;public @interface MyBatisRepository {}
step2.将注解添加到Mapper映射器上面。
@Repository("empDAO")@MyBatisRepositorypublic interface EmployeeDAO {}
step3.配置MapperScannerConfigurer。
Spring集成MyBatis (方式二 不使用Mapper映射器)
step1.导包。
spring-webmvc,mybatis,mybatis-spring,spring-jdbc
ojdbc,dbcp,junit。
step2.添加Spring配置文件
MyBatis配置文件的内容变成了一个bean
(SqlSessionFactoryBean)
<util:properties id="db" location="classpath:db.properties"/> <!-- 配置数据库连接池 --> <bean id="ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="#{db.driver}"/> <property name="url" value="#{db.url}"/> <property name="username" value="#{db.user}"/> <property name="password" value="#{db.pwd}"/> </bean> <!-- 配置SqlSessionFactoryBean --> <!-- 该bean的作用是用来代替MyBatis配置文件 --> <bean id="ssfb" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 指定连接池 --> <property name="dataSource" ref="ds"/> <!-- 指定映射文件位置 --> <property name="mapperLocations" value="classpath:entity/*.xml"/> </bean> <!-- 配置SqlSessionTemplate --> <!-- SqlSessionTemplate封装了SqlSession的操作。 --> <bean id="sst" class="org.mybatis.spring.SqlSessionTemplate"> <!-- 指定SqlSessionFactoryBean --> <constructor-arg index="0" ref="ssfb"/> </bean> <!-- 配置组件扫描 --> <context:component-scan base-package="dao"/> </beans>
step3.实体类
@Repository("empDAO")public class EmployeeDAOMyBatisImpl implements EmployeeDAO{ @Autowired @Qualifier("sst") private SqlSessionTemplate sst; public void save(Employee emp) { /* * 不用考虑提交事务和关闭SqlSession, * SqlSessionTemplate已经处理了。 */ sst.insert("dao.EmployeeDAO.save", emp); } public List<Employee> findAll() { return sst.selectList("dao.EmployeeDAO.findAll"); } public Employee findById(int id) { return sst.selectOne("dao.EmployeeDAO.findById", id); } public void update(Employee e) { sst.update("dao.EmployeeDAO.update", e); } public void delete(int id) { sst.delete("dao.EmployeeDAO.delete", id); } public Map findById2(int id) { return sst.selectOne( "dao.EmployeeDAO.findById2", id); } public Emp2 findById3(int id) { return sst.selectOne("dao.EmployeeDAO.findById3",id); }}
step4.映射文件
namespace可以自定义。
step5.DAO接口方法名等不做要求。
step6.DAO实现类。
step7.配置SqlSessionTemplate
可以将SqlSessionTemplate注入到DAO,然后 调SqlSessionTemplate提供的方法即可。SqlSessionTemplate封装了SqlSession,我们不用去考虑如何获得SqlSession,如何关闭SqlSession。
<bean id="sst" class="org.mybatis.spring.SqlSessionTemplate"> <!-- 指定SqlSessionFactoryBean --> <constructor-arg index="0" ref="ssfb"/> </bean> <!-- 配置组件扫描 --> <context:component-scan base-package="dao"/>
- mybatis注解+spring集成
- Spring集成MyBatis
- Spring集成Mybatis
- mybatis和spring集成
- spring 集成 mybatis
- Spring集成Mybatis
- spring 集成mybatis
- spring 集成mybatis
- spring mybatis 集成
- Spring 集成 Mybatis
- MyBatis与Spring集成
- MyBatis与Spring集成
- Spring Boot 集成MyBatis
- MyBatis与Spring集成
- Spring集成MyBatis
- Mybatis与Spring集成
- springMVC+spring+Mybatis集成
- Spring Boot 集成Mybatis
- 欢迎使用CSDN-markdown编辑器
- Linux socket编程(二) 服务器与客户端的通信
- Android -- Activity启动过程中的上下文环境初始化分析
- 解决eclipse中不能设置tomcat8.5
- [gdc10][anim&physics]《正当防卫2》的动画技术
- spring集成mybatis
- android之SharedPreferences
- C++程序设计-思维导图
- nginx php设置
- PAT乙级1071. 小赌怡情(15)
- 在Mac中配置Jenkins和Maven项目遇到的问题
- PAT乙级1072. 开学寄语(20)
- 循环
- 一道区间dp和一道字符串