• mybatis-spring的整合


    Maven环境搭建

    导入jar包

    • junit

    • mybatis

    • mysql数据库

    • spring相关

    • aop织入

    • mybatis-spring

    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.yuangroupId>
    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. <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
    16. properties>
    17. <dependencies>
    18. <dependency>
    19. <groupId>junitgroupId>
    20. <artifactId>junitartifactId>
    21. <version>4.12version>
    22. <scope>testscope>
    23. dependency>
    24. <dependency>
    25. <groupId>mysqlgroupId>
    26. <artifactId>mysql-connector-javaartifactId>
    27. <version>5.1.47version>
    28. dependency>
    29. <dependency>
    30. <groupId>org.mybatisgroupId>
    31. <artifactId>mybatisartifactId>
    32. <version>3.5.2version>
    33. dependency>
    34. <dependency>
    35. <groupId>org.springframeworkgroupId>
    36. <artifactId>spring-webmvcartifactId>
    37. <version>5.2.0.RELEASEversion>
    38. dependency>
    39. <dependency>
    40. <groupId>org.springframeworkgroupId>
    41. <artifactId>spring-jdbcartifactId>
    42. <version>5.3.19version>
    43. <scope>compilescope>
    44. dependency>
    45. <dependency>
    46. <groupId>org.aspectjgroupId>
    47. <artifactId>aspectjweaverartifactId>
    48. <version>1.8.13version>
    49. dependency>
    50. <dependency>
    51. <groupId>org.aspectjgroupId>
    52. <artifactId>aspectjweaverartifactId>
    53. <version>1.8.13version>
    54. dependency>
    55. <dependency>
    56. <groupId>org.mybatisgroupId>
    57. <artifactId>mybatis-springartifactId>
    58. <version>2.0.2version>
    59. dependency>
    60. <dependency>
    61. <groupId>org.projectlombokgroupId>
    62. <artifactId>lombokartifactId>
    63. <version>1.16.10version>
    64. dependency>
    65. dependencies>
    66. <build>
    67. <resources>
    68. <resource>
    69. <directory>src/main/javadirectory>
    70. <includes>
    71. <include>**/*.xmlinclude>
    72. includes>
    73. <filtering>truefiltering>
    74. resource>
    75. resources>
    76. build>
    77. project>

    编写mybatis层

    编写实体类

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

    编写核心配置文件

    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. <environments default="development">
    7. <environment id="development">
    8. <transactionManager type="JDBC"/>
    9. <dataSource type="POOLED">
    10. <property name="driver" value="com.mysql.jdbc.Driver"/>
    11. <property name="url"
    12. value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=UTF-8"/>
    13. <property name="username" value="root"/>
    14. <property name="password" value="123456"/>
    15. dataSource>
    16. environment>
    17. environments>
    18. <mappers>
    19. <mapper resource="com/yuan/mapper/UserMapper.xml"/>
    20. mappers>
    21. configuration>

    编写接口

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

    编写Mapper.xml

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

    测试

    1. import com.yuan.mapper.UserMapper;
    2. import com.yuan.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 test() throws IOException {
    14. String resources = "mybatis-config.xml";
    15. InputStream in = Resources.getResourceAsStream(resources);
    16. SqlSessionFactory sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder().build(in);
    17. SqlSession sqlSession = sqlSessionFactoryBuilder.openSession(true);
    18. UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    19. List userList = mapper.selectUser();
    20. for (User user : userList) {
    21. System.out.println(user);
    22. }
    23. }
    24. }


    mybatis-spring整合

            官方文档:mybatis-spring –

    方式一

    步骤(在mybatis层上改造)

        1.配置数据源

        2.sqlSessionFactory

        3.SqlSessionTemplate

            配置文件spring-dao.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/yuan/mapper/*.xml"/>
    19. bean>
    20. <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
    21. <constructor-arg index="0" ref="sqlSessionFactory"/>
    22. bean>
    23. beans>

            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.yuan.pojo"/>
    8. typeAliases>
    9. configuration>

        4.实现接口

            UserMapperImpl.java

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

        5.配置bean

            这里不直接在spring-dao.xml中配置,为了保持spring-dao.xml的干净整洁,因为这个配置文件后续基本不变,新增再下面这里操作即可!

            applicationContext.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.yuan.mapper.UserMapperImpl">
    11. <property name="sqlSession" ref="sqlSession"/>
    12. bean>
    13. beans>

        6.测试

    1. import com.yuan.mapper.UserMapper;
    2. import com.yuan.pojo.User;
    3. import org.junit.Test;
    4. import org.springframework.context.ApplicationContext;
    5. import org.springframework.context.support.ClassPathXmlApplicationContext;
    6. public class MyTest {
    7. @Test
    8. public void test(){
    9. ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
    10. UserMapper userMapper = context.getBean("userMapper", UserMapper.class);
    11. for (User user : userMapper.selectUser()) {
    12. System.out.println(user);
    13. }
    14. }
    15. }

    方式二:SqlSessionDaoSupport实现

            新增一个UserMapperImpl2.java

    1. import com.yuan.pojo.User;
    2. import org.apache.ibatis.session.SqlSession;
    3. import org.mybatis.spring.support.SqlSessionDaoSupport;
    4. import java.util.List;
    5. public class UserMapperImpl2 extends SqlSessionDaoSupport implements UserMapper{
    6. @Override
    7. public List selectUser() {
    8. SqlSession sqlSession = getSqlSession();
    9. UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    10. return mapper.selectUser();
    11. }
    12. }

            注入spring applicationContext.xml配置文件新增如下配置

    1. <bean id="userMapper2" class="com.yuan.mapper.UserMapperImpl2">
    2. <property name="sqlSessionFactory" ref="sqlSessionFactory"/>
    3. bean>

            测试

    1. import com.yuan.mapper.UserMapper;
    2. import com.yuan.pojo.User;
    3. import org.junit.Test;
    4. import org.springframework.context.ApplicationContext;
    5. import org.springframework.context.support.ClassPathXmlApplicationContext;
    6. public class MyTest {
    7. @Test
    8. public void test(){
    9. ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
    10. UserMapper userMapper = context.getBean("userMapper2", UserMapper.class);
    11. for (User user : userMapper.selectUser()) {
    12. System.out.println(user);
    13. }
    14. }
    15. }

  • 相关阅读:
    Apollo(阿波罗)分布式配置中心
    三篇卫星切换的论文
    数商云采购商城价格管理应用场景介绍 | 数字化采购助力汽配行业企业降本增效
    Web --- 端口协议
    音频学习笔记之音频播放
    java写一个用于生成雪花id的工具类
    SpringBoot 条件注解之:自定义条件注解
    源码编译perl5遇到的问题汇总
    【数据结构】——二叉树oj题详解
    UE5导入自定义MetaHuman虚拟人和服装并联动
  • 原文地址:https://blog.csdn.net/weixin_48426115/article/details/126885949