diff --git a/mybatis/lib/hamcrest-core-1.1.jar b/mybatis/lib/hamcrest-core-1.1.jar
new file mode 100644
index 0000000..e5149be
Binary files /dev/null and b/mybatis/lib/hamcrest-core-1.1.jar differ
diff --git a/mybatis/lib/junit-4.13.2.jar b/mybatis/lib/junit-4.13.2.jar
new file mode 100644
index 0000000..6da55d8
Binary files /dev/null and b/mybatis/lib/junit-4.13.2.jar differ
diff --git a/mybatis/lib/lombok.jar b/mybatis/lib/lombok.jar
new file mode 100644
index 0000000..49f5286
Binary files /dev/null and b/mybatis/lib/lombok.jar differ
diff --git a/mybatis/lib/mybatis-3.5.7.jar b/mybatis/lib/mybatis-3.5.7.jar
new file mode 100644
index 0000000..4ec6061
Binary files /dev/null and b/mybatis/lib/mybatis-3.5.7.jar differ
diff --git a/mybatis/lib/mysql-connector-java-8.0.27.jar b/mybatis/lib/mysql-connector-java-8.0.27.jar
new file mode 100644
index 0000000..683ac26
Binary files /dev/null and b/mybatis/lib/mysql-connector-java-8.0.27.jar differ
diff --git a/mybatis/mybatis-config.xml b/mybatis/mybatis-config.xml
new file mode 100644
index 0000000..4c6b659
--- /dev/null
+++ b/mybatis/mybatis-config.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mybatis/mybatis.iml b/mybatis/mybatis.iml
new file mode 100644
index 0000000..559c27e
--- /dev/null
+++ b/mybatis/mybatis.iml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mybatis/out/production/mybatis/com/test/Main.class b/mybatis/out/production/mybatis/com/test/Main.class
new file mode 100644
index 0000000..6dbb061
Binary files /dev/null and b/mybatis/out/production/mybatis/com/test/Main.class differ
diff --git a/mybatis/out/production/mybatis/com/test/MybatisUtil.class b/mybatis/out/production/mybatis/com/test/MybatisUtil.class
new file mode 100644
index 0000000..8aecfc7
Binary files /dev/null and b/mybatis/out/production/mybatis/com/test/MybatisUtil.class differ
diff --git a/mybatis/out/production/mybatis/com/test/entity/Student.class b/mybatis/out/production/mybatis/com/test/entity/Student.class
new file mode 100644
index 0000000..39aef6b
Binary files /dev/null and b/mybatis/out/production/mybatis/com/test/entity/Student.class differ
diff --git a/mybatis/out/production/mybatis/com/test/log/Main.class b/mybatis/out/production/mybatis/com/test/log/Main.class
new file mode 100644
index 0000000..fa81d30
Binary files /dev/null and b/mybatis/out/production/mybatis/com/test/log/Main.class differ
diff --git a/mybatis/out/production/mybatis/com/test/mapper/TestMapper.class b/mybatis/out/production/mybatis/com/test/mapper/TestMapper.class
new file mode 100644
index 0000000..715d8a8
Binary files /dev/null and b/mybatis/out/production/mybatis/com/test/mapper/TestMapper.class differ
diff --git a/mybatis/out/production/mybatis/com/test/test/MainTest.class b/mybatis/out/production/mybatis/com/test/test/MainTest.class
new file mode 100644
index 0000000..791b7f0
Binary files /dev/null and b/mybatis/out/production/mybatis/com/test/test/MainTest.class differ
diff --git a/mybatis/out/production/mybatis/com/test/test/TestFormatter.class b/mybatis/out/production/mybatis/com/test/test/TestFormatter.class
new file mode 100644
index 0000000..9c2bddc
Binary files /dev/null and b/mybatis/out/production/mybatis/com/test/test/TestFormatter.class differ
diff --git a/mybatis/src/com/test/Main.java b/mybatis/src/com/test/Main.java
new file mode 100644
index 0000000..e6452d1
--- /dev/null
+++ b/mybatis/src/com/test/Main.java
@@ -0,0 +1,79 @@
+package com.test;
+
+import com.test.MybatisUtil;
+import com.test.entity.Student;
+import com.test.mapper.TestMapper;
+import lombok.SneakyThrows;
+import org.apache.ibatis.session.SqlSession;
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.apache.ibatis.session.SqlSessionFactoryBuilder;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.logging.*;
+
+public class Main {
+ public static void main(String[] args) throws FileNotFoundException {
+// SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(new FileInputStream("mybatis-config.xml"));
+// try(SqlSession session=sqlSessionFactory.openSession(true)){
+// List list =session.selectList("selectStudent");
+// list.forEach(System.out::println);
+//
+// }
+ try (SqlSession session = MybatisUtil.getSession(true)) {
+ TestMapper mapper=session.getMapper(TestMapper.class);
+ System.out.println(mapper.addStudent(new Student().setName("BBB").setSid(114541)));
+ mapper.deleteStudent(65454);
+ XMLFormatter xmlFormatter=new XMLFormatter();
+ SimpleFormatter simpleFormatter=new SimpleFormatter();
+ Logger logger=Logger.getLogger(Main.class.getName());
+
+ FileHandler fileHandler=new FileHandler("test.log",true);
+ fileHandler.setFormatter(simpleFormatter);
+ fileHandler.setLevel(Level.WARNING);
+ logger.addHandler(fileHandler);
+
+
+ logger.setLevel(Level.WARNING);
+ logger.setUseParentHandlers(false);
+ ConsoleHandler consoleHandler=new ConsoleHandler();
+ consoleHandler.setLevel(Level.WARNING);
+ logger.addHandler(consoleHandler);
+
+ logger.setFilter(record -> !record.getMessage().contains("!"));
+
+ logger.log(Level.SEVERE,"server warning!!!!!");
+ logger.log(Level.WARNING,"warning");
+ logger.log(Level.INFO,"info!!");
+ logger.log(Level.CONFIG,"config!!!");
+ System.out.println(logger.getParent().getClass());
+
+// Mapmap=new HashMap<>();
+// map.put("number",null);
+// System.out.println(map); 区别:map的valuie值可以为空 properties值不能为空
+
+ Properties properties=new Properties();
+ properties.load(new FileInputStream("test.properties"));
+// properties.put("number",null);
+ properties.store(System.out,"Look here");
+ System.getProperties().forEach((k,v)->System.out.println(k+":"+v));
+
+
+
+
+
+
+
+
+
+
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+}
\ No newline at end of file
diff --git a/mybatis/src/com/test/MybatisUtil.java b/mybatis/src/com/test/MybatisUtil.java
new file mode 100644
index 0000000..dc45aea
--- /dev/null
+++ b/mybatis/src/com/test/MybatisUtil.java
@@ -0,0 +1,29 @@
+package com.test;
+
+import org.apache.ibatis.session.SqlSession;
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.apache.ibatis.session.SqlSessionFactoryBuilder;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+
+public class MybatisUtil {
+ //在类加载时就进行创建
+ private static SqlSessionFactory sqlSessionFactory;
+ static {
+ try {
+ sqlSessionFactory = new SqlSessionFactoryBuilder().build(new FileInputStream("mybatis-config.xml"));
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * 获取一个新的会话
+ * @param autoCommit 是否开启自动提交(跟JDBC是一样的,如果不自动提交,则会变成事务操作)
+ * @return SqlSession对象
+ */
+ public static SqlSession getSession(boolean autoCommit){
+ return sqlSessionFactory.openSession(autoCommit);
+ }
+}
diff --git a/mybatis/src/com/test/entity/Student.java b/mybatis/src/com/test/entity/Student.java
new file mode 100644
index 0000000..802f983
--- /dev/null
+++ b/mybatis/src/com/test/entity/Student.java
@@ -0,0 +1,15 @@
+package com.test.entity;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+@Data
+@Accessors(chain = true)
+public class Student {
+
+ String name;
+ int sid;
+
+
+
+}
diff --git a/mybatis/src/com/test/log/Main.java b/mybatis/src/com/test/log/Main.java
new file mode 100644
index 0000000..27b7be6
--- /dev/null
+++ b/mybatis/src/com/test/log/Main.java
@@ -0,0 +1,11 @@
+package com.test.log;
+
+
+import lombok.extern.java.Log;
+@Log(topic = "小王八")
+public class Main {
+ public static void main(String[] args) {
+ System.out.println(log.getName());
+ log.info("Look here");
+ }
+}
diff --git a/mybatis/src/com/test/mapper/TestMapper.java b/mybatis/src/com/test/mapper/TestMapper.java
new file mode 100644
index 0000000..e87ba92
--- /dev/null
+++ b/mybatis/src/com/test/mapper/TestMapper.java
@@ -0,0 +1,13 @@
+package com.test.mapper;
+
+import com.test.entity.Student;
+import org.apache.ibatis.annotations.*;
+
+public interface TestMapper {
+ @Insert("insert into student values(#{name},#{sid})")
+ String addStudent(Student student);
+ @Delete("delete from student where sid=#{sid}")
+ void deleteStudent(int sid);
+ @Select("select *from student where sid=#{sid}")
+ String getStudent(int sid);
+}
diff --git a/mybatis/src/com/test/test/MainTest.java b/mybatis/src/com/test/test/MainTest.java
new file mode 100644
index 0000000..002791e
--- /dev/null
+++ b/mybatis/src/com/test/test/MainTest.java
@@ -0,0 +1,42 @@
+package com.test.test;
+
+import com.test.entity.Student;
+import com.test.mapper.TestMapper;
+import lombok.extern.java.Log;
+import org.apache.ibatis.session.SqlSession;
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.apache.ibatis.session.SqlSessionFactoryBuilder;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.logging.LogManager;
+
+
+@Log
+public class MainTest {
+
+ private SqlSessionFactory sqlSessionFactory;
+ @Before
+ public void before(){
+ try {
+ sqlSessionFactory = new SqlSessionFactoryBuilder()
+ .build(new FileInputStream("mybatis-config.xml"));
+ LogManager manager = LogManager.getLogManager();
+ manager.readConfiguration(new FileInputStream("test.properties"));
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Test
+ public void test(){
+ try(SqlSession sqlSession = sqlSessionFactory.openSession(true)){
+ TestMapper mapper = sqlSession.getMapper(TestMapper.class);
+ log.info(mapper.getStudent(2).toString());
+ }
+ }
+}
\ No newline at end of file
diff --git a/mybatis/src/com/test/test/TestFormatter.java b/mybatis/src/com/test/test/TestFormatter.java
new file mode 100644
index 0000000..338aec8
--- /dev/null
+++ b/mybatis/src/com/test/test/TestFormatter.java
@@ -0,0 +1,15 @@
+package com.test.test;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.logging.Formatter;
+import java.util.logging.LogRecord;
+
+public class TestFormatter extends Formatter {
+ @Override
+ public String format(LogRecord record) {
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
+ String time = format.format(new Date(record.getMillis())); //格式化日志时间
+ return time + " : " + record.getMessage() + "\n";
+ }
+}
\ No newline at end of file
diff --git a/mybatis/test.log b/mybatis/test.log
new file mode 100644
index 0000000..80df176
--- /dev/null
+++ b/mybatis/test.log
@@ -0,0 +1,30 @@
+八月 15, 2022 7:04:02 下午 com.test.Main main
+严重: server warning!!!!!
+八月 15, 2022 7:04:02 下午 com.test.Main main
+警告: warning
+八月 15, 2022 7:04:21 下午 com.test.Main main
+严重: server warning!!!!!
+八月 15, 2022 7:04:21 下午 com.test.Main main
+警告: warning
+八月 15, 2022 7:12:06 下午 com.test.Main main
+警告: warning
+八月 15, 2022 7:22:20 下午 com.test.Main main
+警告: warning
+八月 15, 2022 7:22:37 下午 com.test.Main main
+警告: warning
+八月 15, 2022 7:23:19 下午 com.test.Main main
+警告: warning
+八月 15, 2022 7:29:38 下午 com.test.Main main
+警告: warning
+八月 15, 2022 7:29:54 下午 com.test.Main main
+警告: warning
+八月 15, 2022 7:30:20 下午 com.test.Main main
+警告: warning
+八月 15, 2022 7:33:22 下午 com.test.Main main
+警告: warning
+八月 15, 2022 7:33:57 下午 com.test.Main main
+警告: warning
+八月 15, 2022 7:38:42 下午 com.test.Main main
+警告: warning
+八月 15, 2022 7:42:55 下午 com.test.Main main
+警告: warning
diff --git a/mybatis/test.properties b/mybatis/test.properties
new file mode 100644
index 0000000..bb7d0ea
--- /dev/null
+++ b/mybatis/test.properties
@@ -0,0 +1,4 @@
+handlers= java.util.logging.ConsoleHandler
+.level= ALL
+java.util.logging.ConsoleHandler.level = ALL
+java.util.logging.ConsoleHandler.formatter = com.test.TestFormatter
\ No newline at end of file