Heim > Java > javaLernprogramm > Hauptteil

So konfigurieren Sie SpringBoot Mybatis-Dateien

王林
Freigeben: 2023-05-12 18:10:14
nach vorne
1100 Leute haben es durchsucht

    Entwicklungsumgebung: IDEA 2022.1.4+ Mybatis

    1. Übersicht

    Als BiliBili zuvor SprintBoot gelernt hat, habe ich den Code gemäß dem Video eingegeben. SpringBoot hat MyBatis integriert und eine separate mybatis-config.xml-Datei geschrieben. Konfigurieren Sie Datenverbindung, Mapper und andere Informationen. Später fragte ich einen Kollegen, der sich mit Java beschäftigt, und sagte mir, dass die Datei mybatis-config.xml tatsächlich in application.yml geschrieben werden könne. Ich habe es damals nicht verstanden. Später, als ich es erforschte, verstand ich es allmählich. M2. Konfigurieren Sie mybatis-config.xml

    2.1 Konfigurationsinhalt

    Video-Lernen zu der Zeit und auch eine Zusammenfassung geschrieben.

    <?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核心配置文件-->
    <!--顺序 properties->settings->typeAliases->typeHandlers->objectFactory->objectWrapperFactory->reflectorFactory->plugins->environments->databaseIdProvider->mappers-->
    <configuration>
        <!--jdbc.properties配置文件-->
        <properties resource="jdbc.properties"></properties>
     
        <!--设置mybatis输出日志 Mybatis默认就是STDOUT_LOGGING-->
        <settings>
            <setting name="logImpl" value="STDOUT_LOGGING"/>
        </settings>
     
        <!--  类型别名 默认为类名 指定这个后 mapper的xml文件指定返回值时候 可直接写类名(不区分大小写) 建议直接拷贝类名  -->
        <typeAliases>
            <package name="com.ceaning.crudp.entity"/>
        </typeAliases>
     
        <!-- 环境配置 -->
        <!-- development IDEA默认 开发环境 -->
        <!-- 可以自定义 比如定义test formal 看心情 每个SqlSessionFactory实例只能选择一种环境 这个可随时配置 -->
        <!-- test 测试环境 -->
        <!-- formal 正式环境 -->
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC"/>
                <dataSource type="POOLED">
                    <property name="driver" value="${driver}"/>
                    <property name="url" value="${url}"/>
                    <property name="username" value="${username}"/>
                    <property name="password" value="${password}"/>
                </dataSource>
            </environment>
        </environments>
        <!-- 映射器 每一个mapper.xml都需要在Mybatis的核心文件中注册! -->
        <!-- 注册方式1 使用xml文件 <mapper resource="com/ceaning/efmis/mapper/UserMapper.xml"/> -->
        <!-- 注册方式2 使用class文件 <mapper class="com.ceaning.efmis.mapper.UserMapper"/> -->
        <!-- 注册方式3 mapper代理方式 <package name="com.ceaning.efmis.mapper"/> -->
        <!--
            注册方式2(使用class文件)和注册方式3(使用包扫描注册)
            1.接口和他的Mapper配置文件必须同名
            2.接口和他的Mapper配置文件必须在同一个包下
        -->
        <mappers>
            <package name="com.ceaning.crudp.mapper"/>
        </mappers>
    </configuration>
    Nach dem Login kopieren
    b Der Inhalt von jdbc.properties lautet wie folgt:

    Schreiben Sie jdbc separat, um es zu konfigurieren. Wenn Sie befürchten, dass es in Zukunft im Formular bereitgestellt wird, ändern Sie den Inhalt von mybatis -config.xml. (Eigentlich denke ich zu viel)

    driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
    url=jdbc:sqlserver://127.0.0.1:1433;databaseName=EFMIS
    username=sa
    password=123qwe,.
    Nach dem Login kopieren

    2.2 Hilfsklasse

    Die Rolle der Hilfsklasse besteht darin, die Konfiguration zu laden und eine SqlSessionFactory zu erstellen, wenn die Klasse zum ersten Mal aufgerufen wird, um nachfolgende SQL-Abfragen zu erleichtern.

    public class MybatisUtils {
        //SqlSessionFactory 静态单例模式
        private static SqlSessionFactory sqlSessionFactory;
     
        //使用Mybatis第一步 获取SqlSessionFactory对象
        static {
            try{
                String resource="mybatis-config.xml";
                InputStream inputStream= Resources.getResourceAsStream(resource);
                sqlSessionFactory= new SqlSessionFactoryBuilder().build(inputStream);
            } catch (Exception e){
                e.printStackTrace();
            }
        }
     
        //获取SqlSession实例
        //该实例包含了面向数据库执行sql命令所需要的所有方法
        public static SqlSession getSqlSession(){
            return sqlSessionFactory.openSession();
        }
    }
    Nach dem Login kopieren

    2.3 Anrufvorgang

                                                                                                                                                                                         um den Vorgang aufzurufen

     Auf diese Weise können Sie für Operationen eine Verbindung zur Datenbank herstellen.

    @PostMapping("/user/login")
        public Result<?> login(@RequestBody User user){
            SqlSession sqlSession= null;
            Map<String, Object> map= new HashMap<>();
            try{
                sqlSession= MybatisUtils.getSqlSession();
                UserMapper mapper= sqlSession.getMapper(UserMapper.class);
                user= mapper.login(user);
                if (user!= null){
                    //生成token
                    Map<String, String> tokenmap= new HashMap<>();
                    tokenmap.put("loginname", user.getLoginname());
                    tokenmap.put("password", user.getPassword());
                    String token= JwtUtils.getToken(tokenmap);
                    //返回数据
                    map.put("user", user);
                    map.put("token", token);
                    return Result.ok(map);
                } else {
                    return Result.error(CommonConstant.SYS_ERR_CODE, "用户不存在!");
                }
            } catch (Exception e){
                e.printStackTrace();
                return Result.error("异常!"+ e.getMessage());
            } finally {
                if (sqlSession!= null){
                    sqlSession.close();
                }
            }
        }
    Nach dem Login kopieren
    a3. Application.yml Konfigurieren Sie mybatis

    3.1 Konfigurationsinhalt

    Chirurgischer Inhalt kümmert sich nicht darum. Die Hauptsache besteht darin, die Datenquelle spring.datasource zu konfigurieren. Konfigurieren Sie die Datenbankverbindungsinformationen.

     Server:
      port: 8090
     
    spring:
      # quartz定时任务配置
      quartz:
        # 数据库存储方式
        job-store-type: jdbc
        org:
          quartz:
            jobStore:
              class: org.springframework.scheduling.quartz.LocalDataSourceJobStore
      #配置数据源
      datasource:
        url: jdbc:sqlserver://127.0.0.1:1433;SelectMethod=cursor;databaseName=EFMIS
        username: sa
        password: 123qwe,.
        driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
      #json
      jackson:
        date-format: yyyy-MM-dd HH:mm:ss
        time-zone: GMT+8
      #热部署
      devtools:
        restart:
          enabled: true
          additional-paths: src/main/java
          exclude: static/**
      jta:
        atomikos:
          properties:
            recovery:
              forget-orphaned-log-entries-delay:
    mybatis:
      configuration:
        #开启驼峰映射
        map-underscore-to-camel-case: true
        #开启缓存
        cache-enabled: true
      #加载mapper.xml文件
      mapper-locations: classpath:com/ceaning/crudp/mapper/*.xml
      #别名扫描
      type-aliases-package: com.ceaning.crudp.entity
    logging:
      config: classpath:logback-spring.xml
    Nach dem Login kopieren

    3.2 Hilfsklasse

    @Component
    public class SpringUtils implements BeanFactoryPostProcessor {
        /**
         * Spring应用上下文环境
         */
        private static ConfigurableListableBeanFactory beanFactory;
     
     
        @Override
        public void postProcessBeanFactory(ConfigurableListableBeanFactory configurableListableBeanFactory) throws BeansException {
            SpringUtils.beanFactory= configurableListableBeanFactory;
        }
     
        public static <T> T getBean(String name) throws BeansException{
            name= lowerCaseInit(name);
            if(containsBean(name)){
                return (T) beanFactory.getBean(name);
            } else{
                return null;
            }
        }
     
        /**
         * 获取
         * @param cls
         * @return
         * @param <T>
         * @throws BeansException
         */
        public static <T> T getBean(Class<T> cls) throws BeansException{
            T result= (T) beanFactory.getBean(cls);
            return result;
        }
     
        /**
         * 判断 BeanFactory是否包含bean对象
         * @param name
         * @return
         */
        public static boolean containsBean(String name){
            return beanFactory.containsBean(name);
        }
     
        /**
         * 判断以给定名字注册的bean定义是一个singleton还是一个prototype。
         * 如果与给定名字相应的bean定义没有被找到,将会抛出一个异常(NoSuchBeanDefinitionException)
         * @param name
         * @return
         * @throws NoSuchBeanDefinitionException
         */
        public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException{
            return beanFactory.isSingleton(name);
        }
     
        public static Class<?> getType(String name) throws NoSuchBeanDefinitionException{
            return beanFactory.getType(name);
        }
     
        public static String[] getAliases(String name) throws NoSuchBeanDefinitionException{
            return beanFactory.getAliases(name);
        }
     
        /**
         * 首字母小写
         * @param name
         * @return
         */
        private static String lowerCaseInit(String name){
            if(name.length()>0){
                char c= name.charAt(0);
                if(c>=65 && c<=90){
                    int i= c+ 32;
                    return ((char)i)+ name.substring(1);
                } else{
                    return name;
                }
            } else{
                return null;
            }
        }
    }
    Nach dem Login kopieren

    3.3 Aufrufoperation

                                                                                                                                                                ausführbare Datei zur Anmeldung bei der App

    @PostMapping("/user/login")
        public Result<?> login(@RequestBody User user){
            Map<String, Object> map= new HashMap<>();
            try{
                UserMapper mapper= SpringUtils.getBean(UserMapper.class);
                user= mapper.login(user);
                if (user!= null){
                    //生成token
                    Map<String, String> tokenmap= new HashMap<>();
                    tokenmap.put("loginname", user.getLoginname());
                    tokenmap.put("password", user.getPassword());
                    String token= JwtUtils.getToken(tokenmap);
                    //返回数据
                    map.put("user", user);
                    map.put("token", token);
                    return Result.ok(map);
                } else {
                    return Result.error(CommonConstant.SYS_ERR_CODE, "用户不存在!");
                }
            } catch (Exception e){
                e.printStackTrace();
                return Result.error("异常!"+ e.getMessage());
            } 
        }
    Nach dem Login kopieren
    3. Es können auch Datenbankverbindungsvorgänge durchgeführt werden.

    rrreee

    Das obige ist der detaillierte Inhalt vonSo konfigurieren Sie SpringBoot Mybatis-Dateien. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Verwandte Etiketten:
    Quelle:yisu.com
    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage