整合MyBatis

1、整合MyBatis

步骤:

  1. 导入相关jar包

    1. junit

    2. mybatis

    3. mysql数据库

    4. spring相关的

    5. aop织入

    6. mybatis-spring【new】

  2. 编写配置文件

  3. 测试

1.1、MyBatis

pom.xml

复制代码
<?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">
    <parent>
        <artifactId>spring-study</artifactId>
        <groupId>com.kuang</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion><artifactId>spring-10-mybatis</artifactId><dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.28</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.8</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.3.14</version>
        </dependency>
        <!-- Spring操作数据库的话,还需要一个spring-jdbc -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.3.14</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.9.7</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.6</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.22</version>
        </dependency><!--        <dependency>-->
<!--            <groupId>cglib</groupId>-->
<!--            <artifactId>cglib</artifactId>-->
<!--            <version>3.3.0</version>-->
<!--        </dependency>-->
    </dependencies><build>
        <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>
​
​
​
​
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties></project>
复制代码

 

  1. 编写实体类

    User类

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

     

  2. 编写核心配置文件

    mybatis-config.xml

    复制代码
    <?xml version="1.0" encoding="UTF8" ?>
    <!DOCTYPE configuration
            PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <!-- configuration核心配置文件 -->
    <configuration><typeAliases>
            <package name="com.kuang.pojo"/>
        </typeAliases><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:///mybatis?useSSL=false"/>
                    <property name="username" value="root"/>
                    <property name="password" value="root"/>
                </dataSource>
            </environment>
        </environments><mappers>
            <mapper class="com.kuang.mapper.UserMapper"/>
        </mappers></configuration>
    复制代码

     

  3. 编写接口

    UserMapper

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

     

  4. 编写Mapper.xml

    UserMapper.xml

    复制代码
    <?xml version="1.0" encoding="UTF8" ?>
    <!DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <!-- configuration核心配置文件 -->
    <mapper namespace="com.kuang.mapper.UserMapper"><select id="selectUser" resultType="com.kuang.pojo.User"><!-- resultType="User" -->
            select * from mybatis.user;
        </select></mapper>
    复制代码

     

  5. 测试

    MyTest类

    复制代码
    public class MyTest {
        @Test
        public void test() throws IOException {
            String resources = "mybatis-config.xml";
            InputStream in = Resources.getResourceAsStream(resources);
    ​
            SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(in);
            SqlSession sqlSession = sessionFactory.openSession(true);
    ​
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
            List<User> userList = mapper.selectUser();
    ​
            for (User user : userList){
                System.out.println(user);
            }
    ​
        }
    }
    复制代码

     

1.2、Mybatis-spring(整合方式1)

  1. 编写数据源配置

    编写spring-dao.xml

    复制代码
    <!-- DataSource:使用Spring的数据源替换Mybatis的配置 c3p0 dbcp druid
    我们这里使用Spring提供的JDBC org.springframework.jdbc.datasource
    --><bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
         <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
         <property name="url" value="jdbc:mysql:///mybatis?useSSL=false"/>
         <property name="username" value="root"/>
         <property name="password" value="root"/>
     </bean>
    复制代码

     

  2. sqlSessionFactory

    编写spring-dao.xmll

    <!-- sqlSessionFactory -->
     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
         <property name="dataSource" ref="dataSource" />
         <!-- 绑定Mybatis配置文件 -->
         <property name="configLocation" value="classpath:mybatis-config.xml"/>
         <property name="mapperLocations" value="classpath:com/kuang/mapper/*.xml"/>
     </bean>

     

  3. sqlSessionTemplate

    编写spring-dao.xml

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

     

  4. 需要给接口加实现类【】

    UserMapperImpl类

    复制代码
    public class UserMapperImpl implements UserMapper{
    ​
        //我们的所有操作都使用sqlSession来执行,在原来,现在都使用SqlSessionTemplate;
        private SqlSessionTemplate sqlSession;
    ​
        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-dao.xml

    <!-- -->
    <bean id="userMapper" class="com.kuang.mapper.UserMapperImpl">
        <property name="sqlSession" ref="sqlSession" />
    </bean>

     

  6. 测试

    复制代码
    public class MyTest {
        @Test
        public void test() throws IOException {
    ​
            ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
    ​
            UserMapper userMapper = context.getBean("userMapper", UserMapper.class);
            for (User user : userMapper.selectUser()) {
                System.out.println(user);
            }
    ​
        }
    }
    复制代码

     

可以将spring-dao.xmll整合进applicationContext.xml

编写applicationContext.xml配置文件

复制代码
<?xml version="1.0" encoding="UTF8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       https://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/aop
       https://www.springframework.org/schema/aop/spring-aop.xsd"><import resource="spring-dao.xml"/><!-- -->
    <bean id="userMapper" class="com.kuang.mapper.UserMapperImpl">
        <property name="sqlSession" ref="sqlSession" />
    </bean></beans>
复制代码

 

 

1.3、Mybatis整合方式2

  1. UserMapperImpl2类实现接口

    复制代码
    //Mybatis-plus  通用mapper
    public class UserMapperImpl2 extends SqlSessionDaoSupport implements UserMapper{
    ​
        @Override
        public List<User> selectUser() {
            SqlSession sqlSession = getSqlSession();
            //UserMapper mapper = sqlSession.getMapper(UserMapper.class);
            return getSqlSession().getMapper(UserMapper.class).selectUser();
        }
    }
    复制代码

     

  2. applicationContext.xml

    <import resource="spring-dao.xml"/>
    <bean id="userMapper2" class="com.kuang.mapper.UserMapperImpl2">
        <property name="sqlSessionFactory" ref="sqlSessionFactory"/>
    </bean>

     

  3. 测试

    复制代码
    public class MyTest {
        @Test
        public void test() throws IOException {
    ​
            ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
    ​
            UserMapper userMapper = context.getBean("userMapper2", UserMapper.class);
            for (User user : userMapper.selectUser()) {
                System.out.println(user);
            }
    ​
        }
    }
    复制代码

     

posted @   Resign~as  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示