Mybatis与Mybatis-Spring学习

Mybatis与Mybatis-Spring学习

一、回顾Mybatis

1、导入相关的包

1.1导包

1.junit

  <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13</version>
        </dependency>

2.Mybatis

    <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.9</version>
    </dependency>
 

3.mysql-connector-java


<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.25</version>
</dependency>
    

mysql-connector 需要使用8.0以上的驱动,否则会包“Failed
  Copy Search Error Troubleshooting
[08S01] Communications link failure The last packet successfully received from the server was 239 milliseconds ago. The last packet sent successfully to the server was 219 milliseconds ago. javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate).”的错误

4.spring相关


    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>5.1.10.RELEASE</version>
    </dependency>
    <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.1.10.RELEASE</version>
        </dependency>   

5.Mybatis-spring 专门整合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>

6.aspectJ AOP 织入器

<!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver -->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.9.7</version>
        </dependency>

7.配置Maven静态资源过滤问

<build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>

2、编写实体类

package org.tax.pojo;
import lombok.Data;
@Data
public class User {
    private int id;
    private String name;
    private String pwd;
}

3、编写核心配置文件

<?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>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&amp;useUnicode=true&amp;characterEncoding=utf8"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="org/mybatis/example/BlogMapper.xml"/>
    </mappers>
</configuration>

4、编写接口

package org.tax.mapper;

import org.tax.pojo.User;

import java.util.List;

public interface UserMapper {
    public List<User> selectUser();
}

5、编写Mapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.tax.mapper.UserMapper">
    <select id="UserMapper" resultType="user">
        select * from mybatis.mybatis_user;
    </select>

</mapper>

6、编写数据库链接工具类


public class MybatisUtils {
  private static SqlSessionFactory sqlSessionFactory=null;
    //创建sqlSessionFactory
     static
     {
          try {
               String resource="mybatis-config.xml";
               InputStream inputStream = Resources.getResourceAsStream(resource);
               sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
          } catch (IOException e) {
               e.printStackTrace();
          }
     }
     //获取Sqlsession链接
  public  static SqlSession getSession(){
          return sqlSessionFactory.openSession();
  }
}

6、测试

注意:

1、需要在核心配置文件中注册Mapper.xml

<mappers>
    <mapper resource="org/tax/mapper/UserMapper.xml"/>
</mappers>

2、核心配置文件中别名的定义

<typeAliases>
    <package name="org.tax.pojo"/>
</typeAliases>

3、Mapper.xml中id要与接口文件中的方法名称一致

<select id="selectUser" resultType="user">
    select * from mybatis.user;
</select>

4、Mysql包错误

Loading class com.mysql.jdbc.Driver'. This is deprecated. The new driver class iscom.mysql.cj.jdbc.Driver’. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.

处理方法:修改配置文件

<dataSource type="POOLED">
    <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&amp;useUnicode=true&amp;characterEncoding=utf8"/>
    <property name="username" value="root"/>
    <property name="password" value="123456"/>
</dataSource>

二、Mybatis-spring

引入Spring之前需要了解mybatis-spring包中的一些重要类;
http://www.mybatis.org/spring/zh/index.html

1、步骤(方法一):

1、编写数据源配置datasource

    <!--Datasource:配置数据源:数据源有非常多,可以使用第三方的,也可使使用Spring的-->
    <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/mybatis?useSSL=false&amp;useUnicode=true&amp;characterEncoding=utf8"/>
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
    </bean>

2、sqlSessionFactory的编写并绑定Mybatis

<!--sqlSessionFactory-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="datasource"/>
        <!--绑定Mybatis-->
        <property name="configLocation" value="classpath:mybatis-config2.xml"/>
        <property name="mapperLocations" value="classpath:org/tax/mapper/*.xml"/>
    </bean>

3、sqlSessionTemplate的编写

<!--    SqlSessionTemplate就是sqlSession-->
    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
        <!--只能使用构造器注入sqlSessionFactory,没有set方法-->
        <constructor-arg index="0" ref="sqlSessionFactory"/>
    </bean>

4、需要对接口加实现类

package org.tax.mapper;

import org.mybatis.spring.SqlSessionTemplate;
import org.tax.pojo.User;

import java.util.List;

public class UserMapperImpl implements UserMapper{
    //以前都是用sqlSession来执行所有的操作,现在使用SqlSessionTemplate功能一样
    private SqlSessionTemplate sqlSession;
    //Spring 万物皆注入,要使用set方法
    public void setSqlSession(SqlSessionTemplate sqlSession) {
        this.sqlSession = sqlSession;
    }
    @Override
    public List<User> selectUser() {
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
       return mapper.selectUser();
    }
}

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

<!--    写的类要注入到Spring的bean中-->
    <bean id="userMapper" class="org.tax.mapper.UserMapperImpl">
        <property name="sqlSession" ref="sqlSession"/>
    </bean>

6、测试使用即可

public class MyTest2 {
    @Test
    public void test(){
       ApplicationContext context = new ClassPathXmlApplicationContext("spring-dao.xml");
        System.out.println("这个是Spring接管了mybatis的测试");
        UserMapper userMapper = context.getBean("userMapper", UserMapper.class);
        for (User user : userMapper.selectUser()) {
            System.out.println(user);

        }
    }
}

2、方法二(SqlSessionDaoSupport)

继承SqlSessionDaoSupport,重写方法

public class UserMapperImpl2 extends SqlSessionDaoSupport implements UserMapper{
    @Override
    public List<User> selectUser() {
        SqlSession sqlSession = getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        return  mapper.selectUser();
    }
}

注册

    <bean id="userMapper2" class="org.tax.mapper.UserMapperImpl2">
        <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
    </bean>

配置图

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值