• spring整合Mybatis-P23,24,25


    复习Mybatis(都是之前的内容,不再解释)

    6个需要修改或创建的文件

    UserMapper

    1. package com.Li.mapper;
    2. import com.Li.pojo.User;
    3. import java.util.List;
    4. public interface UserMapper {
    5. public List selectUser();
    6. }

    UserMapper.xml

    1. "1.0" encoding="UTF-8" ?>
    2. mapper
    3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    5. <mapper namespace="com.Li.mapper.UserMapper">
    6. <select id="selectUser" resultType="user">
    7. select * from mybatis.user
    8. select>
    9. mapper>

    User

    1. package com.Li.pojo;
    2. import lombok.Data;
    3. @Data
    4. public class User {
    5. private int id;
    6. private String name;
    7. private String pwd;
    8. }

    mybatis-config.xml

    1. "1.0" encoding="UTF-8" ?>
    2. configuration
    3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
    5. <configuration>
    6. <typeAliases>
    7. <package name="com.Li.pojo"/>
    8. typeAliases>
    9. <environments default="development">
    10. <environment id="development">
    11. <transactionManager type="JDBC"/>
    12. <dataSource type="POOLED">
    13. <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
    14. <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=utf8"/>
    15. <property name="username" value="root"/>
    16. <property name="password" value="123456"/>
    17. dataSource>
    18. environment>
    19. environments>
    20. <mappers>
    21. <mapper resource="com/Li/mapper/UserMapper.xml"/>
    22. mappers>
    23. configuration>

    MyTest

    1. import com.Li.mapper.UserMapper;
    2. import com.Li.pojo.User;
    3. import org.apache.ibatis.io.Resources;
    4. import org.apache.ibatis.session.SqlSession;
    5. import org.apache.ibatis.session.SqlSessionFactory;
    6. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    7. import org.junit.Test;
    8. import java.io.IOException;
    9. import java.io.InputStream;
    10. import java.util.List;
    11. public class MyTest {
    12. @Test
    13. public void selectUser() throws IOException {
    14. String resource = "mybatis-config.xml";
    15. InputStream inputStream = Resources.getResourceAsStream(resource);
    16. SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    17. SqlSession sqlSession = sqlSessionFactory.openSession();
    18. UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    19. List userList = mapper.selectUser();
    20. for (User user: userList){
    21. System.out.println(user);
    22. }
    23. sqlSession.close();
    24. }
    25. }

    pom.xml

    1. "1.0" encoding="UTF-8"?>
    2. <project xmlns="http://maven.apache.org/POM/4.0.0"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    5. <parent>
    6. <artifactId>spring-studyartifactId>
    7. <groupId>com.LigroupId>
    8. <version>1.0-SNAPSHOTversion>
    9. parent>
    10. <modelVersion>4.0.0modelVersion>
    11. <artifactId>spring-10-mybatisartifactId>
    12. <properties>
    13. <maven.compiler.source>8maven.compiler.source>
    14. <maven.compiler.target>8maven.compiler.target>
    15. properties>
    16. <dependencies>
    17. <dependency>
    18. <groupId>junitgroupId>
    19. <artifactId>junitartifactId>
    20. <version>4.12version>
    21. dependency>
    22. <dependency>
    23. <groupId>mysqlgroupId>
    24. <artifactId>mysql-connector-javaartifactId>
    25. <version>8.0.29version>
    26. dependency>
    27. <dependency>
    28. <groupId>org.mybatisgroupId>
    29. <artifactId>mybatisartifactId>
    30. <version>3.5.2version>
    31. dependency>
    32. <dependency>
    33. <groupId>org.springframeworkgroupId>
    34. <artifactId>spring-webmvcartifactId>
    35. <version>5.3.23version>
    36. dependency>
    37. <dependency>
    38. <groupId>org.springframeworkgroupId>
    39. <artifactId>spring-jdbcartifactId>
    40. <version>6.0.0version>
    41. dependency>
    42. <dependency>
    43. <groupId>org.aspectjgroupId>
    44. <artifactId>aspectjweaverartifactId>
    45. <version>1.9.4version>
    46. dependency>
    47. <dependency>
    48. <groupId>org.mybatisgroupId>
    49. <artifactId>mybatis-springartifactId>
    50. <version>2.0.7version>
    51. dependency>
    52. <dependency>
    53. <groupId>org.projectlombokgroupId>
    54. <artifactId>lombokartifactId>
    55. <version>1.18.10version>
    56. dependency>
    57. dependencies>
    58. <build>
    59. <resources>
    60. <resource>
    61. <directory>src/main/javadirectory>
    62. <includes>
    63. <include>**/*.propertiesinclude>
    64. <include>**/*.xmlinclude>
    65. includes>
    66. <filtering>falsefiltering>
    67. resource>
    68. <resource>
    69. <directory>src/main/resourcesdirectory>
    70. <includes>
    71. <include>**/*.propertiesinclude>
    72. <include>**/*.xmlinclude>
    73. includes>
    74. <filtering>falsefiltering>
    75. resource>
    76. resources>
    77. build>
    78. project>

    测试:


    整合Mybatis方式一:(详解在代码中)

     UserMapperImpl:(接口的实现类,用来实现 UserMapper的Mybatis)

    1. package com.Li.mapper;
    2. import com.Li.pojo.User;
    3. import org.mybatis.spring.SqlSessionTemplate;
    4. import java.util.List;
    5. public class UserMapperImpl implements UserMapper{
    6. //作用是简化测试类
    7. //我们的所有操作,都使用sqlSession来执行,在原来,现在都使用SqlSessionTemplate
    8. private SqlSessionTemplate sqlSession;
    9. public void setSqlSession(SqlSessionTemplate sqlSession) {
    10. this.sqlSession = sqlSession;
    11. }
    12. @Override
    13. public List selectUser() {
    14. UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    15. return mapper.selectUser();
    16. }
    17. }

    mybatis-config.xml:(简化删减里面的内容,将里面的内容移至spring-dao.xml中)

    1. "1.0" encoding="UTF-8" ?>
    2. configuration
    3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
    5. <configuration>
    6. <typeAliases>
    7. <package name="com.Li.pojo"/>
    8. typeAliases>
    9. configuration>

    spring-dao.xml(整合了mybatis-config.xml与spring-dao.xml,使两种xml可以互通)

    1. "1.0" encoding="UTF-8"?>
    2. <beans xmlns="http://www.springframework.org/schema/beans"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xmlns:aop="http://www.springframework.org/schema/aop"
    5. xsi:schemaLocation="http://www.springframework.org/schema/beans
    6. https://www.springframework.org/schema/beans/spring-beans.xsd
    7. http://www.springframework.org/schema/aop
    8. https://www.springframework.org/schema/aop/spring-aop.xsd">
    9. <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    10. <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    11. <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=UTF-8"/>
    12. <property name="username" value="root"/>
    13. <property name="password" value="123456"/>
    14. bean>
    15. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    16. <property name="dataSource" ref="dataSource"/>
    17. <property name="configLocation" value="classpath:mybatis-config.xml"/>
    18. <property name="mapperLocations" value="classpath:com/Li/mapper/*.xml"/>
    19. bean>
    20. <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
    21. <constructor-arg index="0" ref="sqlSessionFactory"/>
    22. bean>
    23. <bean id="userMapper" class="com.Li.mapper.UserMapperImpl">
    24. <property name="sqlSession" ref="sqlSession"/>
    25. bean>
    26. beans>

    Mytest:(以spring的方式来做)

    1. import com.Li.mapper.UserMapper;
    2. import com.Li.pojo.User;
    3. import org.apache.ibatis.io.Resources;
    4. import org.apache.ibatis.session.SqlSession;
    5. import org.apache.ibatis.session.SqlSessionFactory;
    6. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    7. import org.junit.Test;
    8. import org.springframework.context.ApplicationContext;
    9. import org.springframework.context.support.ClassPathXmlApplicationContext;
    10. import java.io.IOException;
    11. import java.io.InputStream;
    12. import java.util.List;
    13. public class MyTest {
    14. @Test
    15. public void selectUser() throws IOException {
    16. ApplicationContext context = new ClassPathXmlApplicationContext("spring-dao.xml");
    17. UserMapper userMapper = context.getBean("userMapper", UserMapper.class);
    18. for (User user : userMapper.selectUser()) {
    19. System.out.println(user);
    20. }
    21. }
    22. }

     测试:

     Error loading class [org.springframework.jdbc.datasource.DriverManagerDataSource] for bean with name

    会出现这样的红字报错。

    直接改jar包的版本。。。这tm花了我好长时间找这个错误。。。无语

    1. <dependency>
    2. <groupId>org.springframeworkgroupId>
    3. <artifactId>spring-jdbcartifactId>
    4. <version>5.2.0.RELEASEversion>
    5. dependency>

    成功!

    小结:你需要去对应MyTest的代码,来理解你每一步操作都是在干什么。


    方式二:(简化方式一)

    UserMapperImpl2:(继承实现)

    1. package com.Li.mapper;
    2. import com.Li.pojo.User;
    3. import org.apache.ibatis.session.SqlSession;
    4. import org.mybatis.spring.support.SqlSessionDaoSupport;
    5. import java.util.List;
    6. //继承SqlSessionDaoSupport,不需要创建sqlSession了,可以直接用
    7. public class UserMapperImpl2 extends SqlSessionDaoSupport implements UserMapper{
    8. @Override
    9. public List selectUser() {
    10. SqlSession sqlSession = getSqlSession();
    11. UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    12. return mapper.selectUser();
    13. }
    14. }

    applicationContext.xml:(将spring-dao.xml与mybatis-config.xml整合为一个)

    1. "1.0" encoding="UTF-8"?>
    2. <beans xmlns="http://www.springframework.org/schema/beans"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xmlns:aop="http://www.springframework.org/schema/aop"
    5. xsi:schemaLocation="http://www.springframework.org/schema/beans
    6. https://www.springframework.org/schema/beans/spring-beans.xsd
    7. http://www.springframework.org/schema/aop
    8. https://www.springframework.org/schema/aop/spring-aop.xsd">
    9. <import resource="spring-dao.xml"/>
    10. <bean id="userMapper" class="com.Li.mapper.UserMapperImpl">
    11. <property name="sqlSession" ref="sqlSession"/>
    12. bean>
    13. <bean id="userMapper2" class="com.Li.mapper.UserMapperImpl2">
    14. <property name="sqlSessionFactory" ref="sqlSessionFactory"/>
    15. bean>
    16. beans>

    修改之后测试成功!

    重点在方式一的理解与掌握!

  • 相关阅读:
    【LeetCode刷题-滑动窗口】-- 795.区间子数组个数
    动态获取input框的值
    数据库系统工程师难考吗?
    【 OpenGauss源码学习 —— 列存储(update_pages_and_tuples_pgclass)】
    阿里技术官首发的Java核心框架指导手册,为了大厂得码住学起来~
    服务器Debian 12.x中安装Jupyer并配置远程访问
    已解决ValueError: If using all scalar values, you must pass an index
    英国G5生物医学类专业IB成绩要求多高?
    中级经济师考试题型有哪些?具体分值是多少?
    纯血鸿蒙APP实战开发——Canvas实现模拟时钟案例
  • 原文地址:https://blog.csdn.net/m0_54842832/article/details/128058519