1.数据库配置文件 mybatis-config-only.xml
<?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 resource="application.properties"/>-->
<!--设置-->
<settings>
<!-- 全局映射器启用缓存 默认为false -->
<setting name="cacheEnabled" value="true"/>
<!-- 查询时,关闭关联对象即时加载以提高性能 -->
<setting name="lazyLoadingEnabled" value="true"/>
<!-- 设置关联对象加载的形态,此处为按需加载字段(加载字段由SQL指定),不会加载关联表的所有字段,以提高性能 -->
<setting name="aggressiveLazyLoading" value="false"/>
<!-- 对于未知的SQL查询,允许返回不同的结果集以达到通用的效果 -->
<setting name="multipleResultSetsEnabled" value="true"/>
<!-- 允许使用列标签代替列名 -->
<setting name="useColumnLabel" value="true"/>
<!-- 允许使用自定义的主键值(比如由程序生成的UUID 32位编码作为键值),数据表的PK生成策略将被覆盖 -->
<setting name="useGeneratedKeys" value="true"/>
<!-- 给予被嵌套的resultMap以字段-属性的映射支持 -->
<setting name="autoMappingBehavior" value="FULL"/>
<!-- 对于批量更新操作缓存SQL以提高性能 但是返回id有问题-->
<setting name="defaultExecutorType" value="SIMPLE"/>
<!-- 数据库超过36000秒仍未响应则超时 -->
<setting name="defaultStatementTimeout" value="36000"/>
<!-- 日志使用logback实现 -->
<!--<setting name="logPrefix" value="mybatis-log."/>-->
<!--是否开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN 到经典 Java 属性名 aColumn 的类似映射。 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<environments default="development">
<environment id="development">
<!--指定事务管理的类型,这里简单使用Java的JDBC的提交和回滚设置-->
<transactionManager type="JDBC"/>
<!--dataSource 指连接源配置,POOLED是JDBC连接对象的数据源连接池的实现-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://1.1.1.1:3306/test?useSSL=false&useUnicode=true&characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<!--指定Mybatis SQL配置文件-->
<mapper resource="com/produce/core/demo/mapper/xml/TestMapper.xml"/>
</mappers>
</configuration>
2.Java工具类 MybatisUtil
public class MybatisUtil {
public static SqlSession getSqlSession(){
//加载配置文件
//String resource = ResourceUtils.getFile("classpath:mybatis-config-only.xml").getPath();
//将配置文件读入字节流
SqlSession session = null;
try (InputStream is = Resources.getResourceAsStream("mybatis-config-only.xml")){
//构建sqlSession工厂
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
//获取sqlSession
session = sqlSessionFactory.openSession();
} catch (IOException e) {
e.printStackTrace();
}
return session;
}
}
3.数据库操作
public void updateEmployeeInfo() {
System.out.println("执行开始变更员工基本信息...");
//获取sqlSession
SqlSession session = MybatisUtil.getSqlSession();
//Mybatis SQL地址
String statement = "com.produce.core.demo.mapper.TestMapper.selectEmployeeList";
String statement1 = "com.produce.core.demo.mapper.TestMapper.updateEmployeeInfo";
try{
//查询系统员工号集合
List<String> list = session.selectList(statement);
for(int i=0;i<list.size();i++){
Map map = new HashMap();
map.put("empCode",list.get(i));
map.put("status","1");
//根据员工号,更新员工信息
session.update(statement1,map);
//每更新一名员工,便手动提交一次事务
session.commit(true);
}
}catch (Exception e){
System.out.println("同步员工基本信息异常...");
e.printStackTrace();
}finally {
session.close();
}
System.out.println("执行完毕变更员工基本信息...");
}