Spring-mybatis
回顾Spring-mybatis 与 mybatis的结构比较
对比
Spring-mybatis 三大改变(准确是2个改变 1.覆盖配置 2.改写方法)
1.使用Spring方式实现了原来写在mybatis里面获取SqlSession的工具类(自定义的)
2.可以使用Spring方式实现mybatis-config.xml里面的配置(也可以两者互通)
3.可以使用Spring方式实现接口的方法(也可使用注解) [然后方法里面去获得对应的mapper]
相关依赖

<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.0.RELEASE</version> </dependency> <!-- test单元测试模块导入的包--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>Test_885</scope> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.9.4</version> <scope>runtime</scope> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.3</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.3.18</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.12</version> </dependency>
静态资源过滤

</dependencies> <!-- 静态资源过滤--> <build> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> </resource> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> </resource> </resources> </build>
改写方法1
xml

<!-- 使用Spring的数据源替换Mybatis的配置--> <bean id="dataSource88" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=UTF-8"/> <property name="username" value="root"/> <property name="password" value="my7shig69l>A"/> </bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource88" /> <!-- 绑定(替代)Mabatis配置文件 然后可以设置相关的属性--> <property name="configLocation" value="classpath:mybatis-config.xml"/> <property name="mapperLocations" value="classpath:com/ljm/dao/UserMapper.xml"/> </bean> <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> <!-- 只能使用构造器注入,因为没有set方法--> <constructor-arg index="0" ref="sqlSessionFactory"/> </bean> <bean id="userMapper_01" class="com.ljm.dao.UserMappermpl"> <property name="sqlSession" ref="sqlSession"/> </bean>
实现类

public class UserMappermpl implements UserMapper{ //原来所有操作都使用sqlSession执行,现在使用SqlSessionTemplate; private SqlSessionTemplate sqlSession; public void setSqlSession(SqlSessionTemplate sqlSession) { this.sqlSession = sqlSession; } public List<User> select_user(){ UserMapper mapper = sqlSession.getMapper(UserMapper.class); return mapper.select_user(); } }
测试

public void test02() { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); UserMapper userMapper = context.getBean("userMapper_01",UserMapper.class); for (User user : userMapper.select_user()) { System.out.println(user); } }
因为替代了 mybatis 的部分内容,所以不在需要在mybatis-config.xml中注册mapper了
改写方法2(本质与方法一相同,不过是简化了步骤)
xml

<bean id="dataSource88" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=UTF-8"/> <property name="username" value="root"/> <property name="password" value="my7shig69l>A"/> </bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource88" /> <!-- 绑定(替代)Mabatis配置文件 然后可以设置相关的属性--> <property name="configLocation" value="classpath:mybatis-config.xml"/> <property name="mapperLocations" value="classpath:com/ljm/dao/UserMapper.xml"/> </bean> <bean id="userMapper_02" class="com.ljm.dao.UserMappermpl02"> <property name="sqlSessionFactory" ref="sqlSessionFactory"/> </bean>
实现类

public class UserMappermpl02 extends SqlSessionDaoSupport implements UserMapper{ // SqlSessionDaoSupport这个类帮忙写了之前的代码 public int insert_user(User user){ return getSqlSession().getMapper(UserMapper.class).insert_user(user); } }
测试

public void test03() { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); UserMapper userMapper = context.getBean("userMapper_02",UserMapper.class); for (User user : userMapper.select_user()) { System.out.println(user); } }
Spring 相关配置(见i上面id=sqlSessionFactory)
指定mybatis-config.xml文件
指定UserMapper.xml文件
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术