org.apache.ibatis.type.JdbcType 是 MyBatis 框架中的一个枚举类型,用于表示 JDBC 定义的 SQL 类型。MyBatis 使用这些类型来与 JDBC 交互,特别是在处理参数和结果集时。
JdbcType 枚举中定义了一系列标准的 JDBC 类型,例如:
JdbcType.VARCHAR
JdbcType.INTEGER
JdbcType.DECIMAL
JdbcType.DATE
JdbcType.TIMESTAMP
…(以及其他多种类型)
当你在 MyBatis 的映射文件(XML 文件)或注解中指定参数或结果集的 JDBC 类型时,你会使用这些 JdbcType 枚举值。
例如,在 MyBatis 的映射文件中,你可能会看到这样的代码片段:
xml
SELECT * FROM PERSON WHERE ID = #{id, jdbcType=INTEGER}
在上面的例子中,我们指定了 #{id} 参数的 JDBC 类型为 INTEGER。虽然 MyBatis 通常能够自动检测参数的类型,但在某些情况下,明确指定类型可能是有益的或必要的。
注意:从 MyBatis 3.4.2 开始,对于大多数情况,你不再需要显式地指定 jdbcType,因为 MyBatis 可以通过 Java 类型的元数据自动推断出正确的 jdbcType。然而,在某些情况下(例如,当数据库列的类型与 Java 类型的标准映射不完全匹配时),显式指定 jdbcType 可能是必要的。
-
MyBatis 通过包含的jdbcType类型
BIT FLOAT CHAR TIMESTAMP OTHER UNDEFINED
TINYINT REAL VARCHAR BINARY BLOB NVARCHAR
SMALLINT DOUBLE LONGVARCHAR VARBINARY CLOB NCHAR
INTEGER NUMERIC DATE LONGVARBINARY BOOLEAN NCLOB
BIGINT DECIMAL TIME NULL CURSOR -
Mybatis中javaType和jdbcType对应关系
-
JDBC Type Java Type
-
CHAR String
-
VARCHAR String
-
LONGVARCHAR String
-
NUMERIC java.math.BigDecimal
-
DECIMAL java.math.BigDecimal
-
BIT boolean
-
BOOLEAN boolean
-
TINYINT byte
-
SMALLINT short
-
INTEGER int
-
BIGINT long
-
REAL float
-
FLOAT double
-
DOUBLE double
-
BINARY byte[]
-
VARBINARY byte[]
-
LONGVARBINARY byte[]
-
DATE java.sql.Date
-
TIME java.sql.Time
-
TIMESTAMP java.sql.Timestamp
-
CLOB Clob
-
BLOB Blob
-
ARRAY Array
-
DISTINCT mapping of underlying type
-
STRUCT Struct
-
REF Ref
-
DATALINK java.net.URL[color=red][/color]
package com.ssm.chapter5.enumeration;
public enum SexEnum {
MALE(1, "男"),
FEMALE(0, "女");
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
SexEnum(int id, String name) {
this.id = id;
this.name = name;
}
public static SexEnum getSexById(int id) {
for (SexEnum sex : SexEnum.values()) {
if (sex.getId() == id) {
return sex;
}
}
return null;
}
}
package com.ssm.chapter5.main;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.Logger;
import com.ssm.chapter5.mapper.EmployeeMapper;
import com.ssm.chapter5.mapper.PdRoleMapper;
import com.ssm.chapter5.mapper.RoleMapper;
import com.ssm.chapter5.mapper2.RoleMapper2;
import com.ssm.chapter5.mapper2.UserMapper2;
import com.ssm.chapter5.param.PageParams;
import com.ssm.chapter5.param.PdCountRoleParams;
import com.ssm.chapter5.param.PdFindRoleParams;
import com.ssm.chapter5.param.RoleParams;
import com.ssm.chapter5.pojo.Employee;
import com.ssm.chapter5.pojo.Role;
import com.ssm.chapter5.pojo2.Role2;
import com.ssm.chapter5.pojo2.User2;
import com.ssm.chapter5.utils.SqlSessionFactoryUtils;
public class Chapter5Main {
public static void main(String[] args) {
// testPdCountRole();
testPdFindRole();
}
public static void testGetRole() {
SqlSession sqlSession = null;
try {
sqlSession = SqlSessionFactoryUtils.openSqlSession();
RoleMapper roleMapper = sqlSession.getMapper(RoleMapper.class);
Role role = roleMapper.getRole(1L);
System.out.println(role.getRoleName());
} catch(Exception ex) {
ex.printStackTrace();
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
}
public static void testFindRolesByMap() {
SqlSession sqlSession = null;
try {
sqlSession = SqlSessionFactoryUtils.openSqlSession();
RoleMapper roleMapper = sqlSession.getMapper(RoleMapper.class);
Map<String, Object> parameterMap = new HashMap<String, Object>();
parameterMap.put("roleName", "1");
parameterMap.put("note", "1");
List<Role> roles = roleMapper.findRolesByMap(parameterMap);
System.out.println(roles.size());
} catch(Exception ex) {
ex.printStackTrace();
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
}
public static void testFindRolesByAnnotation() {
SqlSession sqlSession = null;
try {
sqlSession = SqlSessionFactoryUtils.openSqlSession();
RoleMapper roleMapper = sqlSession.getMapper(RoleMapper.class);
List<Role> roles = roleMapper.findRolesByAnnotation("1", "1");
System.out.println(roles.size());
} catch(Exception ex) {
ex.printStackTrace();
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
}
public static void testFindRolesByBean() {
SqlSession sqlSession = null;
try {
sqlSession = SqlSessionFactoryUtils.openSqlSession();
RoleMapper roleMapper = sqlSession.getMapper(RoleMapper.class);
RoleParams roleParam = new RoleParams();
roleParam.setNote("1");
roleParam.setRoleName("1");
List<Role> roles = roleMapper.findRolesByBean(roleParam);
System.out.println(roles.size());
} catch(Exception ex) {
ex.printStackTrace();
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
}
public static void testFindByMix() {
SqlSession sqlSession = null;
try {
sqlSession = SqlSessionFactoryUtils.openSqlSession();
RoleMapper roleMapper = sqlSession.getMapper(RoleMapper.class);
RoleParams roleParam = new RoleParams();
roleParam.setNote("1");
roleParam.setRoleName("1");
PageParams pageParams = new PageParams();
pageParams.setStart(0);
pageParams.setLimit(100);
List<Role> roles = roleMapper.findByMix(roleParam, pageParams);
System.out.println(roles.size());
} catch(Exception ex) {
ex.printStackTrace();
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
}
public static void testGetRoleUseResultMap() {
SqlSession sqlSession = null;
try {
sqlSession = SqlSessionFactoryUtils.openSqlSession();
RoleMapper roleMapper = sqlSession.getMapper(RoleMapper.class);
Role role = roleMapper.getRoleUseResultMap(1L);
System.out.println(role.getRoleName());
} catch(Exception ex) {
ex.printStackTrace();
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
}
public static void testInsertRole() {
SqlSession sqlSession = null;
try {
sqlSession = SqlSessionFactoryUtils.openSqlSession();
RoleMapper roleMapper = sqlSession.getMapper(RoleMapper.class);
Role role = new Role();
role.setRoleName("role_name_5");
role.setNote("note_5");
roleMapper.insertRole(role);
//回填
System.out.println(role.getId());
sqlSession.commit();
} catch(Exception ex) {
sqlSession.rollback();
ex.printStackTrace();
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
}
public static void testInsertRole2() {
SqlSession sqlSession = null;
try {
sqlSession = SqlSessionFactoryUtils.openSqlSession();
RoleMapper roleMapper = sqlSession.getMapper(RoleMapper.class);
Role role = new Role();
role.setRoleName("role_name");
role.setNote("note");
roleMapper.insertRole2(role);
//回填
System.out.println(role.getId());
sqlSession.commit();
} catch(Exception ex) {
sqlSession.rollback();
ex.printStackTrace();
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
}
public static void testUpdateRole() {
SqlSession sqlSession = null;
try {
sqlSession = SqlSessionFactoryUtils.openSqlSession();
RoleMapper roleMapper = sqlSession.getMapper(RoleMapper.class);
Role role = new Role();
role.setRoleName("role_name_1_update");
role.setNote("note_1_update");
role.setId(1L);
roleMapper.updateRole(role);
sqlSession.commit();
} catch(Exception ex) {
sqlSession.rollback();
ex.printStackTrace();
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
}
public static void testDeleteRole() {
SqlSession sqlSession = null;
try {
sqlSession = SqlSessionFactoryUtils.openSqlSession();
RoleMapper roleMapper = sqlSession.getMapper(RoleMapper.class);
roleMapper.deleteRole(3L);
sqlSession.commit();
} catch(Exception ex) {
sqlSession.rollback();
ex.printStackTrace();
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
}
public static void testGetEmployee() {
SqlSession sqlSession = null;
try {
sqlSession = SqlSessionFactoryUtils.openSqlSession();
EmployeeMapper employeeMapper = sqlSession.getMapper(EmployeeMapper.class);
Employee employee = employeeMapper.getEmployee(1L);
System.out.println(employee.getWorkCard().getPosition());
} catch(Exception ex) {
ex.printStackTrace();
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
}
public static void testGetEmployee2() {
SqlSession sqlSession = null;
try {
sqlSession = SqlSessionFactoryUtils.openSqlSession();
EmployeeMapper employeeMapper = sqlSession.getMapper(EmployeeMapper.class);
Employee employee = employeeMapper.getEmployee2(1L);
System.out.println(employee.getWorkCard().getPosition());
} catch(Exception ex) {
ex.printStackTrace();
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
}
public static void testUserRole() {
SqlSession sqlSession = null;
try {
sqlSession = SqlSessionFactoryUtils.openSqlSession();
RoleMapper2 roleMapper2 = sqlSession.getMapper(RoleMapper2.class);
Role2 role2 = roleMapper2.getRole(1L);
System.out.println(role2.getUserList().size());
UserMapper2 userMapper2 = sqlSession.getMapper(UserMapper2.class);
User2 user2 = userMapper2.getUser(1L)