【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>

posted @   VVS,冷漠的心  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?

囚鸟该如何超越今生?

点击右上角即可分享
微信分享提示