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("執行完畢變更員工基本信息...");
}