【Spring 框架(自学)】Day06(集成mybatis)--2022/4/6
Spring与Mybatis的集成
就是将spring与mybatis框架整合,整合的时候,以Spring为主,包住整个框架,通过IOC(控制反转)=来实现Mybatis的对象创建,所以配置文件也需要做出改变:
环境配置
基础配置:
<!--配置Mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
<!--数据库连接池:Mybatis自带的数据连接池性能太弱,改用阿里的-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.8</version>
</dependency>
<!--德鲁伊Druid连接池:Mybatis自带的数据连接池性能太弱,改用阿里的-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.8</version>
</dependency>
<!--配置junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
Spring环境配置:
<!--Spring本体-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.9.RELEASE</version>
</dependency>
<!--Spring事务-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.2.9.RELEASE</version>
</dependency>
<!--Spring访问数据库-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.9.RELEASE</version>
</dependency>
Mybatis环境配置
<!--Mybatis本体-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<!--Mybatis整合Spring的依赖:创建Mybatis对象-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.3</version>
</dependency>
其他配置:
<build>
<!--用来包含src/main/resources的文件输出到结果中,输出到classes目录中-->
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
这几个配置是固定的,也是做项目之前的基础配置
集成的实现
Mybatis实现数据库的CRUD
首先进行Mybatis框架的搭建(映射数据库、并进行数据库的CRUD操作):
//创建映射数据库的Pojo实体类:User
public class User{
private Integer id;
private String username;
private String password;
private Integer role;
//构造方法
//Getter()和Setter()方法
//toString()方法
}
//创建持久层(Dao)的接口,并书写方法:USerMapper
public interface UserMapper{
int addUser(User user);
List<User> queryUser();
}
<!--Mybatis框架对持久层进行方法的实现:com/mybatis/Dao
UserMapper.xml
-->
<!--头文件-->
<mapper namespace = "持久层(Dao)的接口" useGeneratedKeys="true" keyProperty="id">
<insert id = "addUser" parameterType="Pojo中的实体类">
insert into tbuser (username, password, role)
values (#{username},#{password},#{role})
</insert>
<select id = "queryUser" resultType = "Pojo中的实体类">
select * from tbuser
</select>
</mapper>
配置Mybatis-config文件
<!--头文件-->
<configuration>
<!--日志工厂设置-->
<settings>
<!--
LOG4J:LOG4J日志输出
<setting name="logImpl" value="LOG4J"/>
-->
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
<typeAliases>
<!--自动识别,并设置别名-->
<package name="com.mybatis"/>
</typeAliases>
<mappers>
<package name="com.mybatis.Dao"/>
</mappers>
</configuration>
配置数据库文件(db.properties)
mysql.driver= com.mysql.cj.jdbc.Driver
mysql.url=jdbc:mysql://localhost:3306/db_mybatisweb?useSSL=false&Timezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8
mysql.username= root
mysql.password= 123456
mysql.max= 20
创建业务层(Service),实现持久层方法并专注业务的开发
//业务层接口创建
public interface UserService{
int addUser(User user);
List<User> queryUser();
}
//接口实现类
public class UserServiceImpl implements UserService{
//创建持久层(Dao)接口的对象
private UserMapper userMapper;
//因为是属性,所以要进行set赋值,绑定持久层(Dao)接口
public void setUserMapper(UserMapper userMapper) {
this.userMapper = userMapper;
}
//实现方法
public int addUser(User user){
int num = userMapper.addUser();
return num;
}
public List<User> queryUser(){
List<User> userList = userMapper.queryUser();
return userList;
}
}
将Mybatis框架交给Spring来管理
通过IOC(控制反转),将Mybatis框架全权交给Spring容器进行对象的创建和管理:
-
声明db.properties
-
声明数据源,连接数据库
-
声明SqlSessionFactory,创建Sqlession工厂
-
声明持久层(Dao)的对象
<!--头文件-->
<!-- 1 .声明database配置文件 -->
<context:property-placeholder location="classpath:数据库配置文件"></context:property-placeholder>
<!-- 2 .声明数据源,连接数据库 -->
<bean id="myDataBaseSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<!--声明数据库连接的信息-->
<property name="driverClassName" value="${mysql.driver}"></property>
<property name="url" value="${mysql.url}"></property>
<property name="username" value="${mysql.username}"></property>
<property name="password" value="${mysql.password}"></property>
<!--数据库最大连接数:20-->
<property name="maxActive" value="${mysql.max}"></property>
</bean>
<!-- 3 .声明SqlSessionFactory
3.1 传入数据源
3.2 mybatis配置文件交给spring容器管理
-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--set注入,将数据库连接池赋给了dataSource属性-->
<property name="dataSource" ref="myDataBaseSource"></property>
<!--声明mybatis-config文件的位置
configLocation是Resource类型,用来读取配置文件的
其用value来传值给configLocation,其中classpath:用来寻找配置文件的位置
-->
<property name="configLocation" value="classpath:mybatis-config.xml"></property>
</bean>
<!-- 4 .将持久层(Dao)交给Spring容器管理,创建Mapper对象
4.1 传入SqlSession,得到getMapper()方法
4.2 指定持久层(Dao)所在的包名,并为每个Mapper创建对象
MapperScannerConfigurer属性:会为所有Dao层接口执行getMapper()方法
-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!--指定已经创建好的sqlSession对象-->
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
<!--指定Dao接口所在的包名
MapperScannerConfigurer会扫描包中所有的接口,并为每个接口执行一遍getMapper()方法,得到每个接口的Dao对象
然后把它放到Spring的容器当中
-->
<property name="basePackage" value="com.mybatis.Dao"></property>
</bean>
<!--创建Service对象,将Dao层对象赋予给Service层
实现功能、层级的分离
-->
<bean id="userService" class="com.mybatis.Service.Impl.UserServiceImpl">
<property name="userMapper" ref="userMapper"></property>
</bean>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?