前言
本文将继续上一篇文章的内容对 Spring 数据访问层管理,Spring集成mybatis等知识进行补充,未看过上一篇文章的小伙伴可以点击下方链接,跳转观看上一篇文章Spring框架基础https://mp.csdn.net/mp_blog/creation/editor/141639879
Spring数据访问层管理
首先,我们需要知道 : Spring 是个一站式框架:Spring 自身也提供了web层的 SpringWeb 和 持久层的 SpringJdbcTemplate。
而我们现在讲解的就是SpringJdbcTemplate数据持久层(数据访问层)
开发步骤
在pom.xml文件中下载Spring jdbc数据访问层jar包,具体的jar包已附在下方
<!-- spring-jdbc--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.2.2.RELEASE</version> </dependency> <!--阿里巴巴 数据库连接管理组件--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.10</version> </dependency>
这里默认还需要加mysql的jar包 ,因为Spring也是对jdbc进行封装的
<!--mysql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.16</version> </dependency>
上方下载的阿里巴巴 数据库连接管理组件, 是数据库连接管理对象,负责生成数据库连接对象,以及提供数据库连接功能
让spring管理阿里巴巴数据库连接对象
在之前创建好的spring.xml文件中配置下方代码(文章中提到的文件都在上一篇中创建好了如有不清楚的地方可以到上一篇文章中查看)
<bean id="druidDataSource" class="com.alibaba.druid.pool.DruidDataSource"> <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property> <property name="url" value="jdbc:mysql://127.0.0.1:3306/ssmdb?serverTimezone=Asia/Shanghai"></property> <property name="username" value="root"></property> <property name="password" value="root"></property> <property name="initialSize" value="10"></property><!--初始化连接数量--> <property name="maxActive" value="20"></property><!--最大连接数量--> </bean>
配置好数据库连接后,接下来我们该配置spring中对jdbc进行封装的操作类型 JdbcTemplate
继续在spring.xml文件中添加
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="druidDataSource"></property> </bean>
这里 <property>标签中name是指在JdbcTemplate中定义的属性名,ref是表示需要注入的对象的名称,而这里我们用的是阿里巴巴的数据库,所以注入druidDataSource.
在AdminDao文件中,用@Autowired注解注入JdbcTemplate的对象,在saveAdmin()方法中通过JdbcTemplate的对象调用update()方法
最终结果如下所示
Spring集成Mybatis
介绍完spring的数据访问层管理后,我们继续了解Spring集成Mybatis的过程
Spring集成Mybatis其核心是将SqlSessionFactory交由Spring管理,并由 Spring管理对dao接口的代理实现。
集成过程
创建新的javaEE项目
在pom.xml文件中导入mybatis jar包 包附件如下
<!--spring集成Mybatis jar--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.1</version> </dependency>
配置好后,创建并在Admin实体类中定义好以下属性以及对应的set,get方法
在dao包名下创建LoginDao接口以及其他对应的包名和java文件
在resources文件中创建mappers包和mybatis.xml,spring.xml文件,并在mappers包中创建LoginMapper.xml文件
(这里的图标不同是因为我下载了其他的组件,并不影响操作的实现)
将之前项目中的pom.xml文件中配置过的jar包一 一复制过来,配置好
在mybatis文件中导入下方代码,
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTDConfig3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- mybatis核心全局配置文件 --> <settings> <setting name="logImpl" value="STDOUT_LOGGING"/> <setting name="mapUnderscoreToCamelCase" value="true"/> <!-- 全局二级缓存开关 --> <setting name="cacheEnabled" value="true"/> </settings> <!-- 为类配置别名 --> <typeAliases> <!-- <typeAlias type="com.zhu.mybatispro.model.Admin"></typeAlias>--> <package name="com.zhu.ssm.model"/> </typeAliases> </configuration>
在Loginmapper文件中导入下方代码
<?xml version= "1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTDMapper3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- sql映射文件, 主要写sql实现 --> <mapper namespace="com.zhu.ssm.dao.LoginDao"> <select id="login" resultType="com.zhu.ssm.model.Admin"> select * from admin where account = #{account} and password=#{password} </select> </mapper>
将上一个项目中spring.xml文件中的内容导入这个项目的spring.xml文件中,并添加以上代码
<!-- spring管理生成SqlSessionFactory对象--> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="druidDataSource"></property><!-- 注入数据源--> <property name="configLocation" value="classpath:mybatis.xml"></property><!--配置Mybatis配置文件--> <property name="mapperLocations" value="classpath:mappers/*Mapper.xml"><!--扫描mapper映射文件--> </property> </bean> <!-- 生成dao包下所有接口的代理对象--> <bean id="mapperFactory" class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.zhu.ssm.dao"></property><!--接口所在的包--> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"> </property> </bean>
具体解释请看下图
在service包下的LoginService文件中导入代码
@Service @Transactional(rollbackFor = Exception.class) public class LoginService { @Autowired LoginDao loginDao; public Admin login(Admin admin){ Admin admin1 = loginDao.login(admin); return admin1; } }
在loginDao文件中导入代码
在Test包中的test文件中导入
最后可查询到结果
至此,spring 集成Mybatis也介绍完了.今天的介绍到此为止,之后我还会继续介绍java AOP
,spring web以及springboot. 欢迎大家关注 点赞