Spring +MyBatis 整合

搭建环境
容器中配置Bean组件 ,将来会产生一个Sqlsession对象
SqlSessionTemplate 不会连接释放过程
MapperFactoryBean 封装了SqlSesion对象
两个环境进行整合,配置xml配置
使用配置文件代替了java编程
Spring+Mybatis
1.搭建Spring+mybtis环境
2.添加jar包 Mybtisa开发包,添加sqlmap-config.xml
引入jar包和xml配置
mybatis-spring.jar包
编写实体类 SQL定义文件 mapper映射器
sqlmap-config.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
<typeAliases>
<typeAlias type="com.tracy.eneity.User" alias="user"/>
</typeAliases>
<mappers>
<mapper resource="com/tracy/sql/UserMapper.xml"/>
</mappers>
</configuration>
UserMapper.xml文件
<mapper namespace="com.tracy.dao.UserMapperDao">
<select id="findAll" parameterType="String" resultType="com.tracy.eneity.User">
select * from user order by #{name}
</select>
</mapper>
3.添加整合包
4.配置文件applicationContext.xml
1.编写实体类
属性名与字段名保持一致
2编写UserMapper.xml
定义sql语句
3.定义Mapper映射器
4.SqlSessionFactoryBean 组件获得SqlSesionFactory
5.sqlSessionTemplate 获取SqlSession
sqlSessionTemplate.selectList(“findAll”);
简化获取SqlSession
MapperFactoryBean 定义使用一次接口 MapperScannerConfigure组件 批量生产接口
1.构建SqlSessionFactory
!-- 配置SqlSessionFactroy -->
<bean id="factory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 指Mybatis主配置文件路径 -->
<property name="configLocation" value="classpath:sqlmap-config.xml"></property>
<property name="dataSource" ref="dbcp"></property>
</bean>
不再使用Mybatis数据库使用Spring容器数据库
必须注入dataSource 不然报错
<bean id="dbcp" class="org.apache.commons.dbcp.BasicDataSource">
<property name="url" value="jdbc:mysql://localhost:3306/test"></property>
<property name="username" value="root"></property>
<property name="password" value="123456"></property>
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
</bean>
根据Mapper接口批量创建对象
2,使用对象ScannerMapperConfigurer批量创建对象
指定Mapper接口位置
指定sqlSessionFactroy,获得SqlSessionTemplate对象
<!-- 接口批量创建对象 id为接口首字母小写 扫描dao接口 -->
<bean id="mapper" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.tracy.dao" ></property>
<!-- 创建sqlSessionFactory 进行注入 得到sqlSession对象-->
<property name="sqlSessionFactory" ref="factory"></property>
</bean>
3测试
@Test
public void findAll() {
ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
/* 通过id进行获取接口 */
UserMapperDao userDao=ac.getBean("userMapperDao",UserMapperDao.class);
List<User> list=userDao.findAll("name");
for(User user:list) {
System.out.println(user.getName());
System.out.println();
}
}
mybatis 将组建对象 交给Spring 注入
容器注入 异常信息属于栈信息
指定Spring数据库连接池,不再使用Mybtis数据库连接池
配置MapperScannerConfigurer组件
用于创建Mapper映射器对象 主要注入backPackage 和 SqlSsesionFactory参数
使用SqlsesionTemplate编写dao
dataSource必须指定
springMybatis 整合应用
第一种应用:使用Mapper映射器
1。搭建Spring+mybais环境
用于创建SqlSessionFactory
2.编写实体类、SQL文件 、mapper映射器
3.编写dao接口
4.配置SqlSessionFactoryBean组件
5.配置MapperScannerConfigurer组件
第二种:使用实现类进行访问
1。搭建Spring+mybais环境
用于创建SqlSessionFactory
2.编写实体类、
3.编写dao接口和实现类
dao接口
public interface UserDao {
public List<User> findAll();
}
实现类
@Repository("userDao")
public class UserDaoImp implements UserDao {
@Autowired
private SqlSessionTemplate template;
@Override
public List<User> findAll() {
List<User> list=template.selectList("findAll");
return list;
}
}
4.配置SqlSessionFactoryBean组件
5.配置SqlSessionTemplate组件
追加SqlSessionTemplate定义
走构造器注入,注入SqlSessionFactory
<!-- 使用SqlSessionTemplate 进行接口实现类型对数据库的访问 -->
<bean id="template" class="org.mybatis.spring.SqlSessionTemplate">
<!-- 注入SqlSessionFactory -->
<constructor-arg index="0" ref="factory"></constructor-arg>
</bean>
开启组件扫描
<!-- 开启组件扫描 进行组件注入 -->
<context:component-scan base-package="com.tracy.dao.*"></context:component-scan>
测试
@Test
public void test1() {
ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
UserDao userDao=ac.getBean("userDao",UserDao.class);
List<User> list=userDao.findAll();
for(User user:list) {
System.out.println(user.getName());
}
}
按指定的注解类型进行映射
接口批量创建对象 id为接口首字母小写 扫描dao接口 ,会与组件扫描冲突,自定注解标记
定义注解标记接口
package com.tracy.annotation;
public @interface MyBatisAnnotation {
}
添加自定义接口
@MyBatisAnnotation
public interface UserMapperDao {
public List<User> findAll(String name);
}
本文详细介绍了如何搭建Spring+MyBatis环境,包括添加必要的jar包、配置xml文件、编写实体类、SQL定义文件及mapper映射器。通过整合Spring与MyBatis,实现了数据库操作的自动化和代码的简洁化。
450

被折叠的 条评论
为什么被折叠?



