spring整合mybatis 代理开发方式(重点掌握)

spring整合mybatis 代理开发方式(重点掌握)

项目结构图:
在这里插入图片描述

1.导入依赖和过滤静态资源

<dependencies>

    <!--junit测试类-->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13</version>
        <scope>test</scope>
    </dependency>

    <!-- c3p0依赖 -->
    <dependency>
        <groupId>com.mchange</groupId>
        <artifactId>c3p0</artifactId>
        <version>0.9.5.5</version>
    </dependency>

    <!--mysql驱动-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.11</version>
    </dependency>

    <!--spring操作数据库-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>5.3.9</version>
    </dependency>

    <!-- spring依赖 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.3.12</version>
    </dependency>

    <!--mybatis依赖-->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.1</version>
    </dependency>

    <!--mybatis和spring集成的依赖-->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId>
        <version>2.0.6</version>
    </dependency>

    <!--spring事务-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
        <version>5.3.9</version>
    </dependency>

    <!--阿里的连接池-->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.2.8</version>
    </dependency>

    <!--springmvc-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.3.12</version>
    </dependency>

    <!--servlet-->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>4.0.1</version>
    </dependency>

    <!-- AOP-->
    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjweaver</artifactId>
        <version>1.9.5</version>
    </dependency>

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.22</version>
    </dependency>

</dependencies>


<!--过滤静态资源  解决以下问题:
没有把xml放到resource目录下边。idea 的maven项目不会加载非resource目录下边的xml文件。-->
<build>
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.xml</include>
            </includes>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

2.导入jdbc.properties 和 log4j.properties 在resources 目录下,编写mybatis和spring-mybatis的配置文件

jdbc.properties

driver = com.mysql.cj.jdbc.Driver
url = jdbc:mysql://localhost:3306/tangshi?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false
jdbc.userName = root
passWord = 123456

log4j.properties

# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

myabtis-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>
 <typeAliases>
        <typeAlias type="com.hao.pojo.User" alias="User"/>
    </typeAliases>
    </configuration>

spring-mybatis.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns="http://www.springframework.org/schema/beans"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd
 http://www.springframework.org/schema/context
 http://www.springframework.org/schema/context/spring-context.xsd">


    <!--
     读取 jdbc.properties 中的内容     property-placeholder: 占位符
          location: 属性文件的位置
  -->
    <context:property-placeholder location="jdbc.properties"/>

    <!-- 1) 获得数据库连接池对象,并交由 spring 同一管理 -->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <!-- 数据库连接 -->
        <property name="driverClassName" value="${driver}" />
        <property name="url" value="${url}" />
        <property name="username" value="${jdbc.userName}"/>
        <property name="password" value="${passWord}" />
    </bean>


    <!-- 2) 获取 SqlSessionFactory 对象,并交由 spring 管理-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

        <!-- 注入连接池,给 sqlsessionFactory 的属性 dataSource 赋值,ref="引用该 spring容器
        中的另一个 bean的id"-->
        <property name="dataSource" ref="dataSource"/>
        <!-- 别名包扫描 -->
        <property name="typeAliasesPackage" value="com.hao.pojo" />
        <!-- 注入 映射文件 mapper
        给 sqlsessionFactory 的属性 mapperLocation 赋值
          value="映射文件 XXXmapper.xml 的相对路径" -->
        <property name="mapperLocations" value="classpath:com/hao/mapper/*.xml"/> <!--接口与xml在同一包-->
        <property name="configLocation" value="classpath:mybatis-config.xml"/>    <!--接口与xml在不同包-->
    </bean>
    

    <!--3.  扫描mapping文件对应dao文件所在的包-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer" >
        <property name="basePackage" value="com.hao.mapper" />
    </bean>

    
</beans>

3.编写实体类 User.java 实体类属性尽量与数据库表中列明相同(不同也没关系,可以在mapper映射文件中设置)

package com.hao.pojo;

public class User {

    private Integer id;
    private String name;
    private String upwd;
    private String phone;
    private String email;
    private Integer age;
    private Integer status;
    private Integer classNo;

    public User() {
    }

    public User(Integer id, String name, String upwd, String phone,
                String email, Integer age, Integer status, Integer classNo) {
        this.id = id;
        this.name = name;
        this.upwd = upwd;
        this.phone = phone;
        this.email = email;
        this.age = age;
        this.status = status;
        this.classNo = classNo;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", upwd='" + upwd + '\'' +
                ", phone='" + phone + '\'' +
                ", email='" + email + '\'' +
                ", age=" + age +
                ", status=" + status +
                ", classNo=" + classNo +
                '}';
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getname() {
        return name;
    }

    public void setname(String name) {
        this.name = name;
    }

    public String getupwd() {
        return upwd;
    }

    public void setupwd(String upwd) {
        this.upwd = upwd;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public Integer getClassNo() {
        return classNo;
    }

    public void setClassNo(Integer classNo) {
        this.classNo = classNo;
    }
}

4.接口类USerMapper.java 在接口中编写方法

public interface UserMapper {

    List<User> findAllUser(); //查询全部用户
        }

5.接口映射文件 UserMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!-- namespace 对应dao接口全称:包名+类名 -->
<mapper namespace="com.hao.mapper.UserMapper">


    <!-- 属性名与列名不一致的解决办法 column 数据库列名 properrty 类里的属性名 -->
    <resultMap type="User" id="user">
        <result property="name" column="uname" javaType="String"></result>
    </resultMap>

    <!--查询全部用户-->
    <select id="findAllUser"  resultMap="user">
        select *
        from t_user;
    </select>
    </mapper>

6.测试

package com.hao.test;


import com.hao.mapper.UserMapper;
import com.hao.pojo.User;
import lombok.extern.log4j.Log4j;
import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.util.HashMap;
import java.util.List;


@Log4j
public class MyTest {

    
    @Test
    public  void test1(){
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-mybatis.xml");
        UserMapper um = context.getBean( UserMapper.class);

        log.debug("开始执行SQL语句!");
        //全部用户
        List<User> list = um.findAllUser();
        for (User user : list) {
            System.out.println(user);
        }
            }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值