Mapper配置文件-select
常用属性
常用属性
默认值
说明
其他
resultType
返回类型(类型全限定名或别名)
resultType和resultMap只能使用一个
resultMap
MyBatis最复杂的属性。用于结果映射
resultType和resultMap只能使用一个
useCache
true
是否将结果存入二级缓存
Mapper配置文件-结果映射
自动映射可在settings中进行配置
autoMappingBehavior将select的字段名映射到resultType类的同名属性
select id,user_name => User(id,user_name)
可使用SQL语句的AS别名,灵活性高
默认值为PARTIAL
可选值
说明
NON
不映射
PARTIAL
非嵌套映射
FULL
嵌套映射
mapUnderscoreToCamelCase将select的字段(下划线列明)映射到resultType类的驼峰命名
select id,user_name => User(id,userName)
灵活性低,严格按照转换规则
map使用map映射结果集,即Map<字段名, 值>
设置resultType="map"即可
可读性差
resultMap自定义映射规则
123456789<resultMap id="该resultMap的id" type="对应的类全限定名或别名"> <!--该类的 ...
Mapper概述
功能定义了SQL语句及执行该语句的方法名、参数、SQL类型至Java类型的转换等
生命周期Mapper由SqlSession获得,表示一条SQL的执行,只是一条请求
定义MapperMapper可由接口和/或配置文件组成
Mapper接口
是一个普通的接口文件,定义了每个SQL执行语句的方法名和参数
SQL语句及参数可由注解定义,也可由对应的配置文件定义
没有具体的实现类(实现类由MyBatis自动实现)
Mapper配置文件参见: https://mybatis.org/mybatis-3/zh/sqlmap-xml.html
1234567<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace=&quo ...
SqlSession
功能执行SQL语句,事务管理,获取Mapper等,相当于一个数据库连接(不太一样)
SQL可直接由SqlSession执行,也可由SqlSession获得Mapper后,由Mapper执行
生命周期应存在于一个业务中,包含多个Mapper执行请求,commit后关闭连接(必须)
使用方法参见: https://mybatis.org/mybatis-3/zh/java-api.html#SqlSession
直接执行示例1Module module = (Module)sqlSession.selectOne("statement", param);
可选方法有selectOne、selectList、insert、update等,具体可参见org.apache.ibatis.session.SqlSession接口
statement指Mapper配置文件中包含namespace的SQL语句id的全限定名,若该id是全局唯一的,也可只写id名
缺点使用字符串形式,不符合类型安全,无法获得有效提示和错误信息,难以测试等原因,不常使用
通过Mapper接口执行
获取 ...
SqlSessionFactory
功能用于创建SqlSession,相当于数据库连接池
生命周期应该全局只有一个,作为单例存在
使用方法参见: https://mybatis.org/mybatis-3/zh/java-api.html#SqlSessionFactory
123456789SqlSession sqlSession = sqlSessionFactory.openSession(事务级别,执行器等)SqlSession openSession(boolean autoCommit);//默认falseSqlSession openSession(Connection connection);SqlSession openSession(TransactionIsolationLevel level);//默认nullSqlSession openSession(ExecutorType execType);SqlSession openSession(ExecutorType execType, boolean autoCommit);SqlSession openSession(ExecutorTy ...
Configuration配置
参见: https://mybatis.org/mybatis-3/zh/configuration.html
功能MyBatis的核心,包括数据源、数据库连接池、事务管理器等
配置可由配置文件xml、代码等方式创建
方法MyBatis配置可通过配置文件或Configuration类进行配置
配置文件方式简易配置一个常用的简单配置如下所示
123456789101112131415161718192021<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEconfigurationPUBLIC"-//mybatis.org//DTDConfig3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <environments default="development"> <environment ...
结构
see: https://mybatis.org/mybatis-3/zh/getting-started.html
配置SqlSessionFactoryBuilder使用配置文件或Configure配置类生成SqlSessionFactory
包含了数据库连接信息、数据库连接池、mapper文件或mapper类的位置等
SqlSessionFactoryBuilder用于创建SqlSessionFactory
SqlSessionFactory用于创建SqlSession
SqlSession用于执行Mapper
MapperMapper定义了方法名、参数、具体的SQL语句
需要在MyBatis配置文件中引入mapper的位置
Mybatis与Hibernate的区别
Hibernate
MyBatis
SQL语句
自动生成
手动编写,工作量大
SQL效率
自动生成,难以优化
SQL可移植性
数据库无关
手动修改SQL进行移植
缓存
二级缓存不佳
react-router v5没有IndexRoute
react-router v5没有IndexRoute组件,可以直接间Route用于渲染
v5版本的Route可以直接嵌入组件内部,根据path渲染
12345678910111213///FrameRoute.tsx<FrameRoute> <Route path='/' exact component={Home} /> <Route path='/detail/:id' component={Detail} /></FrameRoute>///使用<HashRouter> <Route path='/' component={Frame}/><HashRouter>///或者将FrameRoute直接写入Route的render参数<HashRouter> <Route path='/' render(()=>& ...
TypeScript emitted no output for
问题在使用webpack编译typescript时,报错
1TypeScript emitted no output for 。。。
解决办法在tsconfig.json中添加配置项:
1"noEmit": false
注意部分脚本运行时会自动将onEmit改为true,例如react-scripts