From 8a34d3c7ca0f7cccd0a2f12cca8a3447ac97ebb5 Mon Sep 17 00:00:00 2001 From: chen-xin-zhi <3588068430@qq.com> Date: Tue, 19 Aug 2025 21:00:48 +0800 Subject: [PATCH] second --- pom.xml | 5 -- .../practice/controller/UserController.java | 30 +++++++++ .../example/practice/mapper/UserMapper.java | 20 ++++++ .../practice/mapper/UserMapperImpl.java | 63 +++++++++++++++++++ .../sqlsessionTest/SqlSessionTest.java | 37 ++++++----- .../utils/SqlSessionFactoryUtils.java | 43 +++++++++++++ src/main/resources/application.yml | 6 ++ src/main/resources/mapper/UserMapper.xml | 4 +- src/main/resources/mybatis-config.xml | 40 ++++++------ 9 files changed, 207 insertions(+), 41 deletions(-) create mode 100644 src/main/java/com/example/practice/controller/UserController.java create mode 100644 src/main/java/com/example/practice/mapper/UserMapper.java create mode 100644 src/main/java/com/example/practice/mapper/UserMapperImpl.java create mode 100644 src/main/java/com/example/practice/utils/SqlSessionFactoryUtils.java create mode 100644 src/main/resources/application.yml diff --git a/pom.xml b/pom.xml index 2cbcedd..59bd85f 100644 --- a/pom.xml +++ b/pom.xml @@ -72,11 +72,6 @@ test - - com.github.code-cxz - custom-toolkit - v1.0.0 - diff --git a/src/main/java/com/example/practice/controller/UserController.java b/src/main/java/com/example/practice/controller/UserController.java new file mode 100644 index 0000000..95e34d6 --- /dev/null +++ b/src/main/java/com/example/practice/controller/UserController.java @@ -0,0 +1,30 @@ +package com.example.practice.controller; + +import com.example.practice.entity.User; +import com.example.practice.mapper.UserMapper; +import com.example.practice.mapper.UserMapperImpl; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +//@Controller // UserController userController = new UserController(); userController对象放到SpringIOC容器中 +//@ResponseBody // 把返回值打印到浏览器上 + +@RestController // @Controller + @ResponseBody +@RequestMapping("/user") +public class UserController { + + private UserMapper userMapper = new UserMapperImpl(); + + @GetMapping("/selectAll") + public List queryAll() { + List users = userMapper.selectAll(); + return users; + } + + +} diff --git a/src/main/java/com/example/practice/mapper/UserMapper.java b/src/main/java/com/example/practice/mapper/UserMapper.java new file mode 100644 index 0000000..faf8eb5 --- /dev/null +++ b/src/main/java/com/example/practice/mapper/UserMapper.java @@ -0,0 +1,20 @@ +package com.example.practice.mapper; + +import com.example.practice.entity.User; + +import java.util.List; + +public interface UserMapper { + + List selectAll(); + + User selectOne(Long id); + + int insert(User user); + + int update(User user); + + int delete(Long id); + +} + diff --git a/src/main/java/com/example/practice/mapper/UserMapperImpl.java b/src/main/java/com/example/practice/mapper/UserMapperImpl.java new file mode 100644 index 0000000..5ba6160 --- /dev/null +++ b/src/main/java/com/example/practice/mapper/UserMapperImpl.java @@ -0,0 +1,63 @@ +package com.example.practice.mapper; + +import com.example.practice.entity.User; +import com.example.practice.utils.SqlSessionFactoryUtils; +import org.apache.ibatis.session.SqlSession; + +import java.util.List; + +public class UserMapperImpl implements UserMapper { + + + @Override + public List selectAll() { + // Mybatis动态代理机制 + SqlSession sqlSession = SqlSessionFactoryUtils.getSqlSession(); // 命名空间.sqlId + UserMapper userMapper = sqlSession.getMapper(UserMapper.class); + List list = userMapper.selectAll(); +// List list = sqlSession.selectList("com.example.practice.mapper.UserMapper.selectAll"); + return list; + } + + @Override + public User selectOne(Long id) { + SqlSession sqlSession = SqlSessionFactoryUtils.getSqlSession(); + UserMapper userMapper = sqlSession.getMapper(UserMapper.class); + User user = userMapper.selectOne(id); +// User user = sqlSession.selectOne("com.example.practice.mapper.UserMapper.selectOne", 2); + return user; + } + + @Override + public int insert(User user) { + SqlSession sqlSession = SqlSessionFactoryUtils.getSqlSession(); + UserMapper userMapper = sqlSession.getMapper(UserMapper.class); + int result = userMapper.insert(user); +// int result = sqlSession.insert("com.example.practice.mapper.UserMapper.insert", user); + if (result == 0) throw new RuntimeException("删除失败"); + sqlSession.commit(); + return result; + } + + @Override + public int update(User user) { + SqlSession sqlSession = SqlSessionFactoryUtils.getSqlSession(); + UserMapper userMapper = sqlSession.getMapper(UserMapper.class); + int result = userMapper.update(user); +// int result = sqlSession.update("com.example.practice.mapper.UserMapper.update", user); + if (result == 0) throw new RuntimeException("删除失败"); + sqlSession.commit(); + return result; + } + + @Override + public int delete(Long id) { + SqlSession sqlSession = SqlSessionFactoryUtils.getSqlSession(); + UserMapper userMapper = sqlSession.getMapper(UserMapper.class); + int result = userMapper.delete(id); +// int result = sqlSession.delete("com.example.practice.mapper.UserMapper.delete", 2); + if (result == 0) throw new RuntimeException("删除失败"); + sqlSession.commit(); + return result; + } +} diff --git a/src/main/java/com/example/practice/sqlsessionTest/SqlSessionTest.java b/src/main/java/com/example/practice/sqlsessionTest/SqlSessionTest.java index 918547b..fbeb2fe 100644 --- a/src/main/java/com/example/practice/sqlsessionTest/SqlSessionTest.java +++ b/src/main/java/com/example/practice/sqlsessionTest/SqlSessionTest.java @@ -1,29 +1,38 @@ package com.example.practice.sqlsessionTest; import com.example.practice.entity.User; -import org.apache.ibatis.io.Resources; -import org.apache.ibatis.session.SqlSession; -import org.apache.ibatis.session.SqlSessionFactory; -import org.apache.ibatis.session.SqlSessionFactoryBuilder; +import com.example.practice.mapper.UserMapper; +import com.example.practice.mapper.UserMapperImpl; import java.io.IOException; -import java.io.InputStream; import java.util.List; public class SqlSessionTest { public static void main(String[] args) throws IOException { - // 加载配置文件(转成字节流的形式) - String resourcePath = "mybatis-config.xml"; - InputStream is = Resources.getResourceAsStream(resourcePath); - // SqlSessionFactoryBuilder负责创建SqlSessionFactory对象 - // SqlSessionFactory负责生产SqlSession对象 - // SqlSession对象是负责连接数据库, 每执行一条sql语句,就会创建或者连接池中获取一个对象 - SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder(); - SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is); - SqlSession sqlSession = sqlSessionFactory.openSession(); + UserMapper userMapper = new UserMapperImpl(); + List users = userMapper.selectAll(); + for (User user : users) { + System.out.println(user); + } + +// User user = userMapper.selectOne(2L); +// System.out.println(user); +// +// userMapper.delete(2L); +// +// +// User insertUser = new User(); +// userMapper.insert(insertUser); +// +// +// User updateUser = new User(); +// userMapper.update(updateUser); + + +// SqlSession sqlSession = SqlSessionFactoryUtils.getSqlSession(); // List list = sqlSession.selectList("fdsgfgd.selectList"); // for (User user : list) { diff --git a/src/main/java/com/example/practice/utils/SqlSessionFactoryUtils.java b/src/main/java/com/example/practice/utils/SqlSessionFactoryUtils.java new file mode 100644 index 0000000..f599b04 --- /dev/null +++ b/src/main/java/com/example/practice/utils/SqlSessionFactoryUtils.java @@ -0,0 +1,43 @@ +package com.example.practice.utils; + +import org.apache.ibatis.io.Resources; +import org.apache.ibatis.session.SqlSession; +import org.apache.ibatis.session.SqlSessionFactory; +import org.apache.ibatis.session.SqlSessionFactoryBuilder; + +import java.io.IOException; +import java.io.InputStream; + +public class SqlSessionFactoryUtils { + + private static SqlSessionFactory sqlSessionFactory; + + // 初始化SqlSessionFactory对象,表示需要操作哪个数据库 + static { + // 加载配置文件(转成字节流的形式) + String resourcePath = "mybatis-config.xml"; + InputStream is = null; + try { + is = Resources.getResourceAsStream(resourcePath); + } catch (IOException e) { + e.printStackTrace(); + } + + // SqlSessionFactoryBuilder负责创建SqlSessionFactory对象 + // SqlSessionFactory负责生产SqlSession对象 + // SqlSession对象是负责连接数据库, 每执行一条sql语句,就会创建或者连接池中获取一个对象 + SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder(); + sqlSessionFactory = sqlSessionFactoryBuilder.build(is); + } + + + // 获取数据库连接对象 + public static SqlSession getSqlSession() { + SqlSession sqlSession = sqlSessionFactory.openSession(); + return sqlSession; + } + + + + +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml new file mode 100644 index 0000000..3d65a99 --- /dev/null +++ b/src/main/resources/application.yml @@ -0,0 +1,6 @@ +spring: + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://localhost:3306/practice + username: root + password: 123456 \ No newline at end of file diff --git a/src/main/resources/mapper/UserMapper.xml b/src/main/resources/mapper/UserMapper.xml index 4e0108d..a378f57 100644 --- a/src/main/resources/mapper/UserMapper.xml +++ b/src/main/resources/mapper/UserMapper.xml @@ -2,8 +2,8 @@ - - select * from user diff --git a/src/main/resources/mybatis-config.xml b/src/main/resources/mybatis-config.xml index 9be28de..87c972d 100644 --- a/src/main/resources/mybatis-config.xml +++ b/src/main/resources/mybatis-config.xml @@ -1,28 +1,28 @@ - - + + + + - + - + - - - - - - - - - + + + + + + + + + - + - - - + + + - +