首页技术栈归档照片墙音乐日记随想收藏夹友链留言关于

10.整和mybatis方式(1)

写作时间:2026-07-08

10.整和mybatis方式(1)

Mybatis-Spring网址:mybatis-spring –

步骤:

导入相关jar包

​ junit,

​ mybatis,

​ mysql数据库,

​ spring相关的,

​ aop织入

​ mybatis-spring 【new】

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.example</groupId>
    <artifactId>Spring-09-mybatis</artifactId>
    <version>1.0-SNAPSHOT</version>
   <dependencies>
       <!--单元测试包-->
       <dependency>
           <groupId>junit</groupId>
           <artifactId>junit</artifactId>
           <version>4.13</version>
           <scope>test</scope>
       </dependency>
       <!--mysql驱动包-->
       <dependency>
           <groupId>mysql</groupId>
           <artifactId>mysql-connector-java</artifactId>
           <version>8.0.27</version>
       </dependency>
       <!--mybatis包-->
       <dependency>
           <groupId>org.mybatis</groupId>
           <artifactId>mybatis</artifactId>
           <version>3.5.2</version>
       </dependency>
       <!--spring-webmvc-->
       <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-webmvc</artifactId>
           <version>5.3.13</version>
       </dependency>
       <!--jdbc-->
       <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-jdbc</artifactId>
           <version>5.3.13</version>
       </dependency>
       <!--aop植入包-->
       <dependency>
           <groupId>org.aspectj</groupId>
           <artifactId>aspectjweaver</artifactId>
           <version>1.9.4</version>
       </dependency>
       <!--导入mybatis-Spring-->
       <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
       <dependency>
           <groupId>org.mybatis</groupId>
           <artifactId>mybatis-spring</artifactId>
           <version>2.0.6</version>
       </dependency>
       <!--lombok-->
       <dependency>
           <groupId>org.projectlombok</groupId>
           <artifactId>lombok</artifactId>
           <version>1.18.20</version>
       </dependency>
         <dependency>
           <groupId>commons-dbcp</groupId>
           <artifactId>commons-dbcp</artifactId>
           <version>1.4</version>
       </dependency>
   </dependencies>
</project>

  1. 编写配置文件

  2. 测试

回顾Mybatis

  1. 编写实体类

  2. 编写核心配置文件

  3. 编写接口

  4. 编写Mapper.xml

  5. 测试

Mybatis-Spring

  1. 编写数据源配置

  2. sqlSessionFactory

  3. sqlSessionTemplate

  4. 需要给接口加实现类

  5. 将自己写的实现类,注入到Spring中,

  6. 测试使用

在 Spring 中,JDBC 的相关信息在配置文件中完成,其配置模板

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

    <!-- 配置数据源 --> 
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <!--数据库驱动-->
        <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
        <!--连接数据库的url-->
        <property name= "url" value="jdbc:mysql://localhost/xx" />
        <!--连接数据库的用户名-->
        <property name="username" value="root" />
        <!--连接数据库的密码-->
        <property name="password" value="root" />
    </bean>
    <!--配置JDBC模板-->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <!--默认必须使用数据源-->
        <property name="dataSource" ref="dataSource"/>
    </bean>
    <!--配置注入类-->
    <bean id="xxx" class="xxx">
        <property name="jdbcTemplate" ref="jdbcTemplate"/>
    </bean>
    ...
</beans>

dataSource 定义了 4 个连接数据库的属性

属性名 说明
driverClassName 所使用的驱动名称,对应驱动 JAR 包中的 Driver 类
url 数据源所在地址
username 访问数据库的用户名
password 访问数据库的密码

在 JdbcTemplate 类中,提供了大量的查询和更新数据库的方法,如 query()、update() 等,如下表所示。

方法 说明
public int update(String sql) 用于执行新增、修改、删除等语句 args 表示需要传入到 query 中的参数
public int update(String sql,Object... args) 用于执行新增、修改、删除等语句 args 表示需要传入到 query 中的参数
public void execute(String sql) 可以执行任意 SQL,一般用于执行 DDL 语句 action 表示执行完 SQL 语句后,要调用的函数
public T execute(String sql, PreparedStatementCallback action) 可以执行任意 SQL,一般用于执行 DDL 语句 action 表示执行完 SQL 语句后,要调用的函数
public T query(String sql, ResultSetExtractor rse) 用于执行查询语句 以 ResultSetExtractor 作为参数的 query 方法返回值为 Object,使用查询结果需要对其进行强制转型 以 RowMapper 作为参数的 query 方法返回值为 List
public List query(String sql, RowMapper rse) 用于执行查询语句 以 ResultSetExtractor 作为参数的 query 方法返回值为 Object,使用查询结果需要对其进行强制转型 以 RowMapper 作为参数的 query 方法返回值为 List

接口 StudentMapper

public interface StudentMapper {

    public List<Student> list();
}

实体类

package com.yuan.pojo;

public class Student {

  private long stuId;
  private String stuName;
  private String stuemail;
  private String stuPhone;

  public Student() {
  }

  public Student(long stuId, String stuName, String stuemail, String stuPhone) {
    this.stuId = stuId;
    this.stuName = stuName;
    this.stuemail = stuemail;
    this.stuPhone = stuPhone;
  }

  public long getStuId() {
    return stuId;
  }

  public void setStuId(long stuId) {
    this.stuId = stuId;
  }

  public String getStuName() {
    return stuName;
  }

  public void setStuName(String stuName) {
    this.stuName = stuName;
  }

  public String getStuemail() {
    return stuemail;
  }

  public void setStuemail(String stuemail) {
    this.stuemail = stuemail;
  }

  public String getStuPhone() {
    return stuPhone;
  }

  public void setStuPhone(String stuPhone) {
    this.stuPhone = stuPhone;
  }
}

实现类:StudentMapperImpl

package com.yuan.mapper.impl;

import com.yuan.mapper.StudentMapper;
import com.yuan.pojo.Student;
import org.mybatis.spring.SqlSessionTemplate;

import java.util.List;

public class StudentMapperImpl implements StudentMapper {
    //我们的所有操作,都使用sqLSession来执行,在原来,现在都使用sqLSessionTemplate;
    private SqlSessionTemplate sqlSessionTemplate;

    public void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate) {
        this.sqlSessionTemplate = sqlSessionTemplate;
    }

    public List<Student> list() {
        StudentMapper mapper = sqlSessionTemplate.getMapper(StudentMapper.class);
        return mapper.list();
    }
}

applicationContext.xml

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

    <!--DataSource:使用Spring的数据源替换Mybatis的配置c3pedbcp druid-->
<!--   <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">-->
<!--       <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>-->
<!--       <property name="url" value="jdbc:mysql://localhost:3306/studentdb?useUnicode=true&amp;allowPublicKeyRetrieval=true&amp;characterEncoding=utf8&amp;useSSL=false&amp;serverTimezone=Hongkong"/>-->
<!--       <property name="username" value="root"/>-->
<!--       <property name="password" value="root"/>-->
<!--   </bean>-->
     <!-- <!--或者 1.配置Spring管理数据源(DBCP) destroy-method=”close”的作用是当数据库连接不使用的时候,就把该连接重新放到数据池中,方便下次使用调用 -->-->
    <bean class="org.apache.commons.dbcp.BasicDataSource" id="dataSource"  destroy-method="close">
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/studentdb?useUnicode=true&amp;allowPublicKeyRetrieval=true&amp;characterEncoding=utf8&amp;useSSL=false&amp;serverTimezone=Hongkong"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
    </bean>
    <!--sqLsessionFactory-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <!--绑定mybatis配置文件-->
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
        <!--*代表以xml结尾的所有文件-->
        <property name="mapperLocations" value="com.yuan.mapper/*.xml"/>
    </bean>
    <!--sqLsessionTemplate:就是我们使用的sqLSession-->
    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
        <!--只能使用构造器注入sqLSessionFactory,因为它没有set方法-->
        <constructor-arg index="0" ref="sqlSessionFactory"/>
    </bean>
    <!--如果用来SqlSessionDaoSupport 这一步可以省略-->
   <bean id="studentMapper" class="com.yuan.mapper.impl.StudentMapperImpl">
       <property name="sqlSessionTemplate" ref="sqlSession"/>
   </bean>
</beans>

beans-dao.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd">
     <import resource="applicationContext.xml"/>
fsd
    <!--第二种-->
    <bean id="studentMapperImpl2" class="com.yuan.mapper.impl.StudentMapperImpl2">
        <property name="sqlSessionFactory" ref="sqlSessionFactory"/>
    </bean>
</beans>

mybatis-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>
        <package name="com.yuan.pojo"/>
    </typeAliases>

</configuration>

StudentMapper.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=绑定一个对应的Mapper接口-->
<mapper namespace="com.yuan.mapper.StudentMapper">
    <select id="list" resultType="Student">
          select * from student;
    </select>
</mapper>

测试类

public class Mytest {
    @Test
    public void Mytest() throws IOException {
        ApplicationContext context= new ClassPathXmlApplicationContext("beans-dao.xml");
        StudentMapper studentMapper = context.getBean("studentMapper", StudentMapper.class);
        System.out.println("名称\t手机号\t邮箱");
        for (Student student : studentMapper.list()) {
            System.out.println(student.getStuName()+"\t"+student.getStuPhone()+"\t"+student.getStuemail());
        }
    }
}

方式二

StudentMapperImpl2

public class StudentMapperImpl2 extends SqlSessionDaoSupport implements StudentMapper {
    public List<Student> list() {
        return getSqlSession().getMapper(StudentMapper.class).list();
    }
}

beans-dao.xml


    <bean id="studentMapperImpl2" class="com.yuan.mapper.impl.StudentMapperImpl2">
        <property name="sqlSessionFactory" ref="sqlSessionFactory"/>
    </bean>
avatar

yuanyourdomain

写代码,做研究,记录生活。

RECOMMENDED

MyBatis 动态 SQL

2026-07-08

Nginx 基础入门

2026-07-08

Maven 多模块与私服

2026-07-08