做网站公司选智投未来,良品铺子网站建设目标,wordpress绑定多域名,有什么网站可以做设计赚钱文章目录 Mybatis是什么#xff1f;一、快速入门#xff08;基于Mybatis3方式#xff09;二、MyBatis基本使用2.1 向SQL语句传参2.1.1 mybatis日志输出配置2.1.2 #{}形式2.1.3 ${}形式 2.2 数据输入2.2.1 Mybatis总体机制概括2.2.2 概念说明2.2.3 单个简单类型参数2.2.4 实体… 文章目录 Mybatis是什么一、快速入门基于Mybatis3方式二、MyBatis基本使用2.1 向SQL语句传参2.1.1 mybatis日志输出配置2.1.2 #{}形式2.1.3 ${}形式 2.2 数据输入2.2.1 Mybatis总体机制概括2.2.2 概念说明2.2.3 单个简单类型参数2.2.4 实体类类型参数2.2.5 多个简单类型数据2.2.6 Map类型参数 2.3 数据输出2.3.1 返回单个简单类型2.3.2 返回实体类对象2.3.3 返回Map类型2.3.4 返回List类型2.3.5 返回主键值2.3.6 实体类属性和数据库字段对应关系 2.4 CRUD强化练习2.5 mapperXML标签总结总结 Mybatis是什么
官网 文档 MyBatis 是一款优秀的持久层框架MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJOPlain Old Java Objects普通老式 Java 对象为数据库中的记录。
开发效率HibernateMybatisJDBC
运行效率JDBCMybatisHibernate 一、快速入门基于Mybatis3方式
数据库
CREATE DATABASE mybatis-example;USE mybatis-example;CREATE TABLE t_emp(emp_id INT AUTO_INCREMENT,emp_name CHAR(100),emp_salary DOUBLE(10,5),PRIMARY KEY(emp_id)
);INSERT INTO t_emp(emp_name,emp_salary) VALUES(tom,200.33);
INSERT INTO t_emp(emp_name,emp_salary) VALUES(jerry,666.66);
INSERT INTO t_emp(emp_name,emp_salary) VALUES(andy,777.77);项目的搭建 准备
项目搭建 依赖导入
dependencies!-- mybatis依赖 --dependencygroupIdorg.mybatis/groupIdartifactIdmybatis/artifactIdversion3.5.11/version/dependency!-- MySQL驱动 mybatis底层依赖jdbc驱动实现,本次不需要导入连接池,mybatis自带! --dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion8.0.25/version/dependency!--junit5测试--dependencygroupIdorg.junit.jupiter/groupIdartifactIdjunit-jupiter-api/artifactIdversion5.3.1/version/dependency
/dependencies实体类
public class Employee {private Integer empId;private String empName;private Double empSalary;......set/getMapper接口与MapperXML文件
定义Mapper接口
/*** Description: dao层接口*/
public interface EmployeeMapper {/*** 根据ID查找员工信息* param id* return*/Employee queryById(Integer id);/*** 根据ID删除对应员工* param id* return*/int deleteById(Integer id);
}定义Mapper xml
?xml version1.0 encodingUTF-8 ?
!DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttps://mybatis.org/dtd/mybatis-3-mapper.dtd
!-- namespace等于mapper接口类的全限定名,这样实现对应 --
mapper namespacecom.wake.mapper.EmployeeMapper!-- 查询使用 select标签id 方法名resultType 返回值类型标签内编写SQL语句--select idqueryById resultTypecom.wake.pojo.Employee!-- #{id}代表动态传入的参数,并且进行赋值!... --select emp_id empId,emp_name empName, emp_salary empSalary fromt_emp where emp_id #{id}/selectdelete iddeleteByIddelete from t_emp where emp_id #{id}/delete
/mapper准备Mybatis配置文件
?xml version1.0 encodingUTF-8 ?
!DOCTYPE configurationPUBLIC -//mybatis.org//DTD Config 3.0//ENhttp://mybatis.org/dtd/mybatis-3-config.dtd
configuration!-- environments表示配置Mybatis的开发环境可以配置多个环境在众多具体环境中使用default属性指定实际运行时使用的环境。default属性的取值是environment标签的id属性的值。 --environments defaultdevelopment!-- environment表示配置Mybatis的一个具体的环境 --environment iddevelopment!-- Mybatis的内置的事务管理器 --transactionManager typeJDBC/!-- 配置数据源 --dataSource typePOOLED!-- 建立数据库连接的具体信息 --property namedriver valuecom.mysql.cj.jdbc.Driver/property nameurl valuejdbc:mysql://localhost:3306/mybatis-example/property nameusername valueroot/property namepassword valueroot//dataSource/environment/environmentsmappers!-- Mapper注册指定Mybatis映射文件的具体位置 --!-- mapper标签配置一个具体的Mapper映射文件 --!-- resource属性指定Mapper映射文件的实际存储位置这里需要使用一个以类路径根目录为基准的相对路径 --!-- 对Maven工程的目录结构来说resources目录下的内容会直接放入类路径所以这里我们可以以resources目录为基准 --mapper resourcemappers/EmployeeMapper.xml//mappers/configuration运行 测试
public class MybatisTest {Testpublic void test_01() throws IOException {// 1. 读取外部配置文件mybatis-config.xmlInputStream ips Resources.getResourceAsStream(mybatis-config.xml);// 2. 创建 SqlSessionFactorySqlSessionFactory sessionFactory new SqlSessionFactoryBuilder().build(ips);// 3. 根据sqlSessionFactory 创建 sqlSession (每次业务创建一个用完就释放SqlSession session sessionFactory.openSession();// 4. 获取接口的代理对象代理技术 调用代理对象的方法就会查找Mapper接口的方法//jdk动态代理技术生成的mapper代理对象EmployeeMapper mapper session.getMapper(EmployeeMapper.class);// 内部拼接接口的全限定符号.方法名 去查找sql语句标签// 拼接 类的全限定符号.方法名 整合参数 - ibatis对应的方法传入参数// mybatis底层依赖调用ibatis只不过有固定的模式Employee employee mapper.queryById(1);System.out.println(employee);// 4.提交事务非DQL和释放资源session.commit(); //提交事务 [DQL不需要,其他需要]session.close(); //关闭会话}
}说明
SqlSession代表Java程序和数据库之间的会话。 HttpSession是Java程序和浏览器之间的会话 SqlSessionFactory是“生产”SqlSession的“工厂”。 工厂模式如果创建某一个对象使用的过程基本固定那么我们就可以把创建这个对象的相关代码封装到一个“工厂类”中以后都使用这个工厂类来“生产”我们需要的对象。
SqlSession和HttpSession区别:
HttpSession工作在Web服务器上属于表述层。 代表浏览器和Web服务器之间的会话。 SqlSession不依赖Web服务器属于持久化层。 代表Java程序和数据库之间的会话。 二、MyBatis基本使用 2.1 向SQL语句传参
2.1.1 mybatis日志输出配置
Mybatis 3 配置 我们可以在mybatis的配置文件使用settings标签设置输出运过程SQL日志
通过查看日志我们可以判定#{} 和 ${}的输出效果
settings设置项
logImpl指定 MyBatis 所用日志的具体实现未指定时将自动查找。SLF4J | LOG4J3.5.9 起废弃 | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING未设置
日志配置 settingssetting namelogImpl valueSTDOUT_LOGGING//settings开启日志后 测试
2.1.2 #{}形式
Mybatis会将SQL语句中的#{}转换为问号占位符。 使用这个防止【注入式攻击】
2.1.3 ${}形式
${}形式传参底层Mybatis做的是字符串拼接操作。
结论实际开发中能用#{}实现的肯定不用${}。
特殊情况 动态的不是值是列名或者关键字需要使用${}拼接
//注解方式传入参数
Select(select * from user where ${column} #{value})
User findByColumn(Param(column) String column, Param(value) String value);一个特定的适用场景是通过Java程序动态生成数据库表表名部分需要Java程序通过参数传入而JDBC对于表名部分是不能使用问号占位符的此时只能使用 2.2 数据输入 Mapper接口中 不允许 重载方法
2.2.1 Mybatis总体机制概括
2.2.2 概念说明
这里数据输入具体是指上层方法例如Service方法调用Mapper接口时数据传入的形式。
简单类型只包含一个值的数据类型 基本数据类型int、byte、short、double、……基本数据类型的包装类型Integer、Character、Double、……字符串类型String 复杂类型包含多个值的数据类型 实体类类型Employee、Department、……集合类型List、Set、Map、……数组类型int[]、String[]、……复合类型ListEmployee、实体类中包含集合……
2.2.3 单个简单类型参数 Mapper接口中抽象方法的声明: /*** 根据ID 查询对应员工信息* param id* return*/Employee selectEmpById(Integer id);/*** 根据薪资查找员工信息* param salary* return*/ListEmployee selectEmpBySalary(Double salary);/*** 根据ID 删除员工对象* param id* return*/int deleteEmpById(Integer id);SQL语句 select idselectEmpById resultTypecom.wake.pojo.Employeeselect emp_id empId , emp_name empName , emp_Salary empSalary fromt_emp where emp_id #{id};/selectselect idselectEmpBySalary resultTypecom.wake.pojo.Employeeselect emp_id empId , emp_name empName , emp_Salary empSalary fromt_emp where emp_salary #{salary};/select!-- 传入简单类型 key值 随便写 因为只有一个一般情况写参数名 --delete iddeleteEmpByIddelete from t_emp where emp_id #{id};/delete2.2.4 实体类类型参数
Mapper接口中抽象方法的声明: /*** 插入一条员工信息* param employee* return*/int insertEmp(Employee employee);SQL语句 !-- 传入实体类 key 等于 属性名 --insert idinsertEmpinsert into t_emp (emp_name,emp_salary) values(#{empName},#{empSalary})/insert2.2.5 多个简单类型数据
Mapper接口中抽象方法的声明: /*** 根据名字与薪资 查找员工* param name* param salary* return*/Employee selectEmpByNameAndSalary(Param(empName) String name, Param(salary) Double salary);/*** 根据ID 修改名字* param id* return*/int updateNameById(String name,Integer id);SQL语句 !-- 多个简单参数接口中使用注解Paramormapper.xml中 用[arg1, arg0, param1, param2]指代 (arg要查找的值 , param是要修改的值)--select idselectEmpByNameAndSalary resultTypecom.wake.pojo.Employeeselect emp_id empId , emp_name empName , emp_Salary empSalary fromt_emp where emp_name #{empName} and emp_salary #{salary};/selectupdate idupdateNameByIdupdate t_emp set emp_name #{param1} where emp_id #{arg1};/update2.2.6 Map类型参数
Mapper接口中抽象方法的声明: /*** 传入map员工对象数据* param data* return*/int insertEmpMap(Map data);SQL语句 !-- 传入map的数据 使用的是map的key值 key map key --insert idinsertEmpMapinsert into t_emp (emp_name,emp_salary) values(#{name},#{salary})/insert2.3 数据输出
数据输出总体上有两种形式
增删改操作返回的受影响行数直接使用 int 或 long 类型接收即可查询操作的查询结果
2.3.1 返回单个简单类型
返回单个简单类型如何指定 resultType的写法用返回值类型。
resultType的语法 类的全限定符号 别名简称 指定查询的输出数据类型即可并且插入场景下实现主键数据回显示类型别名typeAliases 自定义类型名字 在 mybatis-config.xml 中全局设置: !-- 单个类单独定义别名 之后resultType 使用“自己设置的名字” --typeAliasestypeAlias typecom.wake.pojo.Employee alias自己设置名字//typeAliases!-- 批量修改 --typeAliases!-- 批量将包下的类 设置别名都为首字母小写 --package namecom.wake.pojo//typeAliases!-- 批量后 想单独设置单个类 使用注解单个类 --!-- Alias(666) --2.3.2 返回实体类对象
resultType: 返回值类型 select idqueryEmpById resultTypeemployeeselect *from t_empwhere emp_Id #{empId};/select要求 查询返回单个实体类型要求 列名 和 属性名 要一致 ! 这样才可以进行实体类的属性映射。 mybatis 可以开启属性列名的自动映射 在 mybatis-config.xml中设置
!-- true开启驼峰命名自动映射即从经典数据库列名 A_COLUMN 映射到经典 Java 属性名 aColumn。--setting namemapUnderscoreToCamelCase valuetrue/2.3.3 返回Map类型
接口
MapString,Object selectEmpNameAndMaxSalary();sql xml
!-- MapString,Object selectEmpNameAndMaxSalary(); --
!-- 返回工资最高的员工的姓名和他的工资 --
select idselectEmpNameAndMaxSalary resultTypemapSELECTemp_name 员工姓名,emp_salary 员工工资,(SELECT AVG(emp_salary) FROM t_emp) 部门平均工资FROM t_emp WHERE emp_salary(SELECT MAX(emp_salary) FROM t_emp)
/selectjunit测试
Testpublic void mybatisTest01() throws IOException {// 1.读取配置文件InputStream ips Resources.getResourceAsStream(Mybatis-Config.xml);// 2. 创建sqlSession 数据库连接工厂SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(ips);// 3. 开启sqlSession 数据库连接SqlSession sqlSession sqlSessionFactory.openSession();// 4. 确定mapper对象EmployeeMapper employeeMapper sqlSession.getMapper(EmployeeMapper.class);// 5. 执行mapper方法MapString, Object stringObjectMap employeeMapper.selectEmpNameAndMaxSalary();SetMap.EntryString, Object entries stringObjectMap.entrySet();for (Map.EntryString, Object entry : entries) {String key entry.getKey();Object value entry.getValue();System.out.println(key --- value);}sqlSession.close();}2.3.4 返回List类型
返回值是集合resultType不需要指定集合类型只需要指定泛型即可。 因为 mybatis - ibatis - selectOne 单个 | selectList 集合 - selectOne 调用[selectList]
接口 /*** 查询全部员工对象* return*/ListEmployee selectAll();mapper.xml !-- ListEmployee selectAll(); --select idselectAll resultTypeemployeeselect emp_id empId,emp_name empName,emp_salary empSalaryfrom t_emp/select测试 Testpublic void mybatisTest01() throws IOException {// 1.读取配置文件InputStream ips Resources.getResourceAsStream(Mybatis-Config.xml);// 2. 创建sqlSession 数据库连接工厂SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(ips);// 3. 开启sqlSession 数据库连接SqlSession sqlSession sqlSessionFactory.openSession();// 4. 确定mapper对象EmployeeMapper employeeMapper sqlSession.getMapper(EmployeeMapper.class);// 5. 执行mapper方法ListEmployee employees employeeMapper.selectAll();for (Employee employee : employees) {System.out.println(employee);}sqlSession.close();}2.3.5 返回主键值
1. 自增长类型主键
接口 /*** 插入一条员工信息* param employee* return*/int insertEmp(Employee employee);xml insert idinsertEmpinsert into t_emp(emp_Name,emp_salary)values(#{empName},#{empSalary});/insert测试 Testpublic void mybatisTest01() throws IOException {// 1.读取配置文件InputStream ips Resources.getResourceAsStream(Mybatis-Config.xml);// 2. 创建sqlSession 数据库连接工厂SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(ips);// 3. 开启sqlSession 数据库连接【自动开启JDBC】// 自动开启事务SqlSession sqlSession sqlSessionFactory.openSession();// 4. 执行代理对象EmployeeMapper employeeMapper sqlSession.getMapper(EmployeeMapper.class);// 5. 执行mapper方法Employee e1 new Employee();e1.setEmpName(亚伦);e1.setEmpSalary(147.6);int i employeeMapper.insertEmp(e1);System.out.println(i);// 6. 释放资源 和 提交事务sqlSession.commit();sqlSession.close();}主键回显:
xml
!--useGeneratedKeystrue : 开启获取数据库主键值keyColumnemp_id : 主键列的值keyPropertyempId : 接收主键列值的属性--insert idinsertEmp useGeneratedKeystrue keyColumnemp_id keyPropertyempIdinsert into t_emp(emp_Name,emp_salary)values(#{empName},#{empSalary});/insert测试: Testpublic void mybatisTest01() throws IOException {// 1.读取配置文件InputStream ips Resources.getResourceAsStream(Mybatis-Config.xml);// 2. 创建sqlSession 数据库连接工厂SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(ips);// 3. 开启sqlSession 数据库连接【自动开启JDBC】// 自动开启事务SqlSession sqlSession sqlSessionFactory.openSession(true);// 4. 执行代理对象EmployeeMapper employeeMapper sqlSession.getMapper(EmployeeMapper.class);// 5. 执行mapper方法Employee e1 new Employee();e1.setEmpName(内尔);e1.setEmpSalary(258.9);// 提交前 主键值System.out.println(前e1.getEmpId());System.out.println();int i employeeMapper.insertEmp(e1);System.out.println(i);// 提交后 主键值System.out.println(后e1.getEmpId());// 6. 释放资源 和 提交事务//sqlSession.commit();sqlSession.close();}2. 非自增长类型主键
新创建一个 表不添加自动更新索引 手动添加UUID
create TABLE teacher(t_id VARCHAR(64) PRIMARY KEY,t_name VARCHAR(20)
)mapper接口
int insertTeacher(Teacher teacher);xml
mapper namespacecom.wake.mapper.TeacherMapperinsert idinsertTeacher!--orderBEFORE|AFTER 确定是在插入语句执行前还是后执行resultType 返回值类型keyProperty 查询结果是给哪个属性--selectKey orderBEFORE resultTypestring keyPropertytIdselect replace(UUID(),-,);/selectKeyinsert into teacher(t_id,t_name) values(#{tId},#{tName});/insert
/mapper测试 Testpublic void mybatisTest02() throws IOException {// 1.读取配置文件InputStream ips Resources.getResourceAsStream(Mybatis-Config.xml);// 2. 创建sqlSession 数据库连接工厂SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(ips);// 3. 开启sqlSession 数据库连接【自动开启JDBC】// 自动开启事务SqlSession sqlSession sqlSessionFactory.openSession(true);// 4. 执行代理对象TeacherMapper teacherMapper sqlSession.getMapper(TeacherMapper.class);// 5. 执行mapper方法Teacher teacher new Teacher();teacher.setTName(维克);// 使用mybatis 在xml中定义uuid//String uuid UUID.randomUUID().toString().replace(-, );//teacher.setTId(uuid);System.out.println(UUID BEFORE:teacher.getTId());int i teacherMapper.insertTeacher(teacher);System.out.println(UUID AFTER:teacher.getTId());System.out.println(i);// 6. 释放资源 和 提交事务//sqlSession.commit();sqlSession.close();}结果
2.3.6 实体类属性和数据库字段对应关系
别名对应 将字段的别名设置成和实体类属性一致。
!-- 编写具体的SQL语句使用id属性唯一的标记一条SQL语句 --
!-- resultType属性指定封装查询结果的Java实体类的全类名 --
select idselectEmployee resultTypecom.doug.mybatis.entity.Employee!-- Mybatis负责把SQL语句中的#{}部分替换成“?”占位符 --!-- 给每一个字段设置一个别名让别名和Java实体类中属性名一致 --select emp_id empId,emp_name empName,emp_salary empSalary from t_emp where emp_id#{maomi}/select全局配置自动识别驼峰式命名规则 在Mybatis全局配置文件加入如下配置
!-- 使用settings对Mybatis全局进行设置 --
settings!-- 将xxx_xxx这样的列名自动映射到xxXxx这样驼峰式命名的属性名 --setting namemapUnderscoreToCamelCase valuetrue//settings就可以不使用别名
!-- Employee selectEmployee(Integer empId); --
select idselectEmployee resultTypecom.doug.mybatis.entity.Employeeselect emp_id,emp_name,emp_salary from t_emp where emp_id#{empId}/select使用resultMap 使用resultMap标签定义对应关系再在后面的SQL语句中引用这个对应关系
!-- 专门声明一个resultMap设定column到property之间的对应关系 --
resultMap idselectEmployeeByRMResultMap typecom.doug.mybatis.entity.Employee!-- 使用id标签设置主键列和主键属性之间的对应关系 --!-- column属性用于指定字段名property属性用于指定Java实体类属性名 --id columnemp_id propertyempId/!-- 使用result标签设置普通字段和Java实体类属性之间的关系 --result columnemp_name propertyempName/result columnemp_salary propertyempSalary//resultMap!-- Employee selectEmployeeByRM(Integer empId); --
select idselectEmployeeByRM resultMapselectEmployeeByRMResultMapselect emp_id,emp_name,emp_salary from t_emp where emp_id#{empId}/select2.4 CRUD强化练习
数据库准备
CREATE TABLE user (id INT(11) NOT NULL AUTO_INCREMENT,username VARCHAR(50) NOT NULL,password VARCHAR(50) NOT NULL,PRIMARY KEY (id)
) ENGINEINNODB AUTO_INCREMENT1 DEFAULT CHARSETutf8;实体类准备
public class User {private int id;private String username;private String password;接口Mapper
public interface UserMapper {/*** 增加* param user* return*/int insert(User user);/*** 修改* param user* return*/int update(User user);/*** 删除* param id* return*/int delete(Integer id);/*** 根据ID查询一条User数据* param id* return*/User selectById(Integer id);/*** 查询全部数据* return*/ListUser selectAll();
}
Mapper.xml
mapper namespacecom.wake.mapper.UserMapperinsert idinsertinsert into user(username,password) values(#{username},#{password});/insertupdate idupdateupdate user set username #{username},password #{password} where id #{id};/updatedelete iddeletedelete from user where id #{id};/deleteselect idselectById resultTypeuserselect id,username,password from user where id #{id};/selectselect idselectAll resultTypeuserselect * from user;/select
/mapper测试 Testpublic void insert01() throws IOException {InputStream ips Resources.getResourceAsStream(Mybatis-Config.xml);SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(ips);SqlSession sqlSession sqlSessionFactory.openSession();UserMapper userMapper sqlSession.getMapper(UserMapper.class);User user new User();user.setUsername(knell);user.setPassword(999);int insert userMapper.insert(user);System.out.println(insert);sqlSession.commit();sqlSession.close();}Testpublic void delete02() throws IOException {InputStream ips Resources.getResourceAsStream(Mybatis-Config.xml);SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(ips);SqlSession sqlSession sqlSessionFactory.openSession();UserMapper userMapper sqlSession.getMapper(UserMapper.class);int delete userMapper.delete(3);System.out.println(delete);sqlSession.commit();sqlSession.close();}Testpublic void update03() throws IOException {InputStream ips Resources.getResourceAsStream(Mybatis-Config.xml);SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(ips);SqlSession sqlSession sqlSessionFactory.openSession();UserMapper userMapper sqlSession.getMapper(UserMapper.class);User user userMapper.selectById(4);user.setUsername(测试);user.setPassword(123456);int update userMapper.update(user);System.out.println(update);sqlSession.commit();sqlSession.close();}Testpublic void selectById04() throws IOException {InputStream ips Resources.getResourceAsStream(Mybatis-Config.xml);SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(ips);SqlSession sqlSession sqlSessionFactory.openSession();UserMapper userMapper sqlSession.getMapper(UserMapper.class);User user userMapper.selectById(1);System.out.println(user);sqlSession.commit();sqlSession.close();}Testpublic void selectAll05() throws IOException {InputStream ips Resources.getResourceAsStream(Mybatis-Config.xml);SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(ips);SqlSession sqlSession sqlSessionFactory.openSession();UserMapper userMapper sqlSession.getMapper(UserMapper.class);ListUser users userMapper.selectAll();System.out.println(users);sqlSession.commit();sqlSession.close();}注意更新要先根据ID查找出对象数据
2.5 mapperXML标签总结
insert – 映射插入语句。update – 映射更新语句。delete – 映射删除语句。select – 映射查询语句。
属性描述id在命名空间中唯一的标识符可以被用来引用这条语句。resultType期望从这条语句中返回结果的类全限定名或别名。 注意如果返回的是集合那应该设置为集合包含的类型而不是集合本身的类型。 resultType 和 resultMap 之间只能同时使用一个。resultMap对外部 resultMap 的命名引用。结果映射是 MyBatis 最强大的特性如果你对其理解透彻许多复杂的映射问题都能迎刃而解。 resultType 和 resultMap 之间只能同时使用一个。timeout这个设置是在抛出异常之前驱动程序等待数据库返回请求结果的秒数。默认值为未设置unset依赖数据库驱动。statementType可选 STATEMENTPREPARED 或 CALLABLE。这会让 MyBatis 分别使用 StatementPreparedStatement 或 CallableStatement默认值PREPARED。 总结
Mybatis操作流程 ibatis 和 Mybatis Mybatis 文档 Mybatis 中文官网 类型的别名
别名映射的类型_bytebyte_char (since 3.5.10)char_character (since 3.5.10)char_longlong_shortshort_intint_integerint_doubledouble_floatfloat_booleanbooleanstringStringbyteBytechar (since 3.5.10)Charactercharacter (since 3.5.10)CharacterlongLongshortShortintIntegerintegerIntegerdoubleDoublefloatFloatbooleanBooleandateDatedecimalBigDecimalbigdecimalBigDecimalbigintegerBigIntegerobjectObjectobject[]Object[]mapMaphashmapHashMaplistListarraylistArrayListcollectionCollection