From a50fac275e275c0da905a79917027bfa5905baa1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E6=AD=A3=E6=B3=A2?= <1938448998@qq.com> Date: Tue, 19 Dec 2023 20:44:59 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=8D=81=E4=BA=8C=E6=9C=88=E5=8D=81?= =?UTF-8?q?=E4=B9=9D=E5=8F=B7=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20231219 SSM-maven.md" | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 "09 \346\233\271\346\255\243\346\263\242/20231219 SSM-maven.md" diff --git "a/09 \346\233\271\346\255\243\346\263\242/20231219 SSM-maven.md" "b/09 \346\233\271\346\255\243\346\263\242/20231219 SSM-maven.md" new file mode 100644 index 0000000..d58dbfc --- /dev/null +++ "b/09 \346\233\271\346\255\243\346\263\242/20231219 SSM-maven.md" @@ -0,0 +1,50 @@ +# 笔记 + +项目名称 + + --pom.xml 核心配置,项目根下 + + --src + + --main + +--java java源码目录 + + --resources java配置文件目录 + + --test + +--java 源码测试目录 + +--resource 测试配置目录 + +**7.1 compile** compile是maven工程的编译命令,作用是将 src/main/java 下的文件编译为 class 文件输出到 target 目录下。 **7.2 test** test是maven工程的测试命令,会执行 src/test/java 下的单元测试类。 cmd 执行 mvn test 执行 src/test/java 下单元测试类,下图为测试结果,运行 1 个测试用例,全部成功。 **7.3 clean** clean是maven工程的清理命令,执行clean会删除target目录及其内容 **7.4 package** package是maven工程的打包命令,对于java工程执行 package 打成 jar 包,对于 web 工程打成 war 包。 **7.5 install** install 是 maven 工程的安装命令,执行 install 将 maven 打成 jar 包或 war 包发布到本地仓库。 从运行结果中,可以看出:当后面的命令执行时,前面的操作过程也都会自动执行 + +### maven的生命周期 + +maven对项目构建过程分为三套相互独立的生命周期,这里说的三套而且是相互独立, 这三套分别是: Clean Lifecycle :在进行真正的构建之前进行一些清理工作。 Default Lifecycle :构建的核心部分,编译,测试,打包,部署等等。 Site Lifecycle :生成项目报告,站点,发布站点。 + +# 作业 + +```java +import org.junit.Test; + +public class Tap { + @Test + public void i(){ + System.out.println(111); + } +} +``` + +```java + + + junit + junit + 3.8.1 + test + + +``` + -- Gitee From 8a17928d252c7b32e36f7585fc882c327a1430a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E6=AD=A3=E6=B3=A2?= <1938448998@qq.com> Date: Thu, 21 Dec 2023 21:30:15 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=8D=81=E4=BA=8C=E6=9C=88=E4=BA=8C?= =?UTF-8?q?=E5=8D=81=E5=8F=B7=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20231219 Maven.md" | 0 .../20231220 Mybatis.md" | 247 ++++++++++++++++++ 2 files changed, 247 insertions(+) rename "09 \346\233\271\346\255\243\346\263\242/20231219 SSM-maven.md" => "09 \346\233\271\346\255\243\346\263\242/20231219 Maven.md" (100%) create mode 100644 "09 \346\233\271\346\255\243\346\263\242/20231220 Mybatis.md" diff --git "a/09 \346\233\271\346\255\243\346\263\242/20231219 SSM-maven.md" "b/09 \346\233\271\346\255\243\346\263\242/20231219 Maven.md" similarity index 100% rename from "09 \346\233\271\346\255\243\346\263\242/20231219 SSM-maven.md" rename to "09 \346\233\271\346\255\243\346\263\242/20231219 Maven.md" diff --git "a/09 \346\233\271\346\255\243\346\263\242/20231220 Mybatis.md" "b/09 \346\233\271\346\255\243\346\263\242/20231220 Mybatis.md" new file mode 100644 index 0000000..6c9bf25 --- /dev/null +++ "b/09 \346\233\271\346\255\243\346\263\242/20231220 Mybatis.md" @@ -0,0 +1,247 @@ +# 笔记 + +### **1.** 创建user表,添加数据 + +```mysql +create database mybatis; +use mybatis; +drop table if exists tb_user; +create table tb_user( +id int primary key auto_increment, +username varchar(20), +password varchar(20), +gender char(1), +addr varchar(30) +); +INSERT INTO tb_user VALUES (1, '张三', '123', '男', '北京'); +INSERT INTO tb_user VALUES (2, '李四', '234', '女', '天津'); +INSERT INTO tb_user VALUES (3, '王五', '11', '男', '西安'); +``` + +### **2.** 创建模块根据数据表,编写对应的java类 + +在 com.mdd.pojo 包下创建 User类 + +```java +public class User {private int id;private String username;private String password;private String gender;private String addr;//省略了 setter 和 getter} +``` + +### 3.导入坐标 + +```java + + +4. 编写 MyBatis 核心配置文件 -- > 替换连接信息 + 在模块下的 resources 目录下创建mybatis的配置文件 mybatis-config.xml ,内容 +如下: + +org.mybatis +mybatis +3.5.5 + + + +com.mysql +mysql-connector-j +8.1.0 + + + +junit +junit +4.13 +test + + +``` + +### **4.** **编写** **MyBatis** **核心配置文件** **-- >** 替换连接信息 + + 在模块下的 resources 目录下创建mybatis的配置文件 mybatis-config.xml ,内容 + +如下: + +```java + + + + + + + + + + + +5. 编写 SQL 映射文件 --> 统一管理sql语句 +在模块的 resources 目录下创建映射配置文件 UserMapper.xml ,内容如下: +6. 编写测试类 + + + + + + + + + + + + + + + + + + + + +``` + +### **5.** **编写** **SQL** **映射文件** **-->** 统一管理sql语句 + +在模块的 resources 目录下创建映射配置文件 UserMapper.xml ,内容如下: + +```java + + + + + +``` + +### **6.** 编写测试类 + +```java +@Test +public static test01() { +//1. 加载mybatis的核心配置文件,获取 SqlSessionFactory +String resource = "mybatis-config.xml"; +InputStream inputStream = +Resources.getResourceAsStream(resource); +SqlSessionFactory sqlSessionFactory = new +SqlSessionFactoryBuilder().build(inputStream); +//2. 获取SqlSession对象,用它来执行sql +SqlSession sqlSession = sqlSessionFactory.openSession(); +//3. 执行sql +List users = sqlSession.selectList("test.selectAll"); // +参数是一个字符串,该字符串必须是映射配置文件的namespace.id +System.out.println(users); +//4. 释放资源 +sqlSession.close(); +} +``` + + + +# 作业 + +```java +package com.okk; + +import com.okk.pojo.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 java.io.IOException; +import java.io.InputStream; +import java.util.List; + +public class App { + public static void main(String[] args) throws IOException { +// 1 加载mybatis的核心配置文件 + String resource = "mybatis-config.xml"; + InputStream inputStream = Resources.getResourceAsStream(resource); + SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); + + // 2. 创建sqlSession对象。用来执行SQL语句 + SqlSession sqlSession = sqlSessionFactory.openSession(); + + // 3 执行SQL语句 + User o = sqlSession.selectOne("test.selectById", 3); + List list = sqlSession.selectList("test.selectAll");// namespace.id + System.out.println(list); + + User user= sqlSession.selectOne("test.selectById", 9); + System.out.println(user); + // 4 释放资源 + sqlSession.close(); + } +} +``` + +```xml + + + + + + + + + + + + + + + + + + + + + + +``` + +```xml + + + + + + + + + insert into tb_user (username, age, gender) VALUES (#{username}, #{age}, #{gender}) + + + + + delete from tb_user where id = #{id} + + + + update tb_user + set username = #{username}, + age = #{age}, + gender =#{gender} + where id = #{id}; + + + +``` + -- Gitee From 4b0cb28e4a280b156b1b1c8937d38964e76c8787 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E6=AD=A3=E6=B3=A2?= <1938448998@qq.com> Date: Mon, 25 Dec 2023 20:00:06 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=8D=81=E4=BA=8C=E6=9C=88=E4=BA=8C?= =?UTF-8?q?=E5=8D=81=E4=BA=8C=E5=8F=B7=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...is\347\254\254\344\272\214\347\211\210.md" | 335 ++++++++++++ ...36\345\210\240\346\224\271\346\237\245.md" | 509 ++++++++++++++++++ 2 files changed, 844 insertions(+) create mode 100644 "09 \346\233\271\346\255\243\346\263\242/20231221 Mybatis\347\254\254\344\272\214\347\211\210.md" create mode 100644 "09 \346\233\271\346\255\243\346\263\242/20231222 Mybatis\345\242\236\345\210\240\346\224\271\346\237\245.md" diff --git "a/09 \346\233\271\346\255\243\346\263\242/20231221 Mybatis\347\254\254\344\272\214\347\211\210.md" "b/09 \346\233\271\346\255\243\346\263\242/20231221 Mybatis\347\254\254\344\272\214\347\211\210.md" new file mode 100644 index 0000000..da54fc7 --- /dev/null +++ "b/09 \346\233\271\346\255\243\346\263\242/20231221 Mybatis\347\254\254\344\272\214\347\211\210.md" @@ -0,0 +1,335 @@ +# 笔记 + +```java +使用Mapper代理方式,必须满足以下要求: +1.定义与SQL映射文件同名的Mapper接口, +2.在 Mapper 接口中定义方法,方法名就是SQL映射文件中sql语句的id,并保持 +参数类型和返回值类型一致 +￾namespace:名称空间。必须是对应接口的全限定名 > + + + select * from tb_brand; + + + + + + + +``` + +**6.定义与 SQL 映射文件同名的 Mapper 接口** + +``` +package com.mdd.mapper; + +import com.mdd.pojo.Brand; + +import java.util.List; + +public interface BrandMapper { + // 方法名就是SQL映射文件中sql语句的id,并保持返回值类型一致 + // 查询所有 + List selectAll(); + // 按照id查询 + Brand selectById(Integer id); + // 查询id大于某个值的 + List selectAllById(Integer id); +} +``` + +**7. 编写测试类** + +``` +package com.mdd; + +import com.mdd.mapper.BrandMapper; +import com.mdd.pojo.Brand; +import org.apache.ibatis.io.Resources; +import org.apache.ibatis.session.SqlSession; +import org.apache.ibatis.session.SqlSessionFactoryBuilder; +import org.junit.Test; + +import java.io.IOException; +import java.util.List; + +public class TestBrand { + @Test + public void selectAll() throws IOException { + //1. 加载mybatis的核心配置文件,获取 sqlSession 对象 + SqlSession sqlSession = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml")).openSession(); + //2. 获取UserMapper接口的代理对象,执行SQL语句 + BrandMapper mapper = sqlSession.getMapper(BrandMapper.class); + // 查询所有 + List brands = mapper.selectAll(); + System.out.println(brands); + + // 指定id查询 + Brand brand = mapper.selectById(1); + System.out.println(brand); + + // 查询id大于某个值的 + List list = mapper.selectAllById(1); + System.out.println(list); + + //3. 释放资源 + sqlSession.close(); + } +} +``` \ No newline at end of file diff --git "a/09 \346\233\271\346\255\243\346\263\242/20231222 Mybatis\345\242\236\345\210\240\346\224\271\346\237\245.md" "b/09 \346\233\271\346\255\243\346\263\242/20231222 Mybatis\345\242\236\345\210\240\346\224\271\346\237\245.md" new file mode 100644 index 0000000..a3c23a2 --- /dev/null +++ "b/09 \346\233\271\346\255\243\346\263\242/20231222 Mybatis\345\242\236\345\210\240\346\224\271\346\237\245.md" @@ -0,0 +1,509 @@ +# 笔记 + +1.导入maven环境 + 2.创建dao接口,里面定了你需要对数据库执行什么操作 + 3.编写mapper文件,sql映射文件,写上你的sql语句 + 4.创建mybatis主配置文件,读取配置文件中的内容,连接到数据库 + 5.使用mybatis对象执行sql语句:sqlSession对象 + 6.关闭连接:sqlSession.close(); + + +# 作业 + +数据库表 + +```java +CREATE TABLE `t_user` ( + `id` int NOT NULL AUTO_INCREMENT, + `username` varchar(255) DEFAULT NULL, + `password` varchar(255) DEFAULT NULL, + `email` varchar(255) DEFAULT NULL, + `phone` varchar(255) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; + +INSERT INTO `t_user`(`id`, `username`, `password`, `email`, `phone`) VALUES (1, 'admin', 'admin', 'admin@qq.com', '1008611'); +INSERT INTO `t_user`(`id`, `username`, `password`, `email`, `phone`) VALUES (2, 'root', 'root', 'root@qq.com', '1008622'); +INSERT INTO `t_user`(`id`, `username`, `password`, `email`, `phone`) VALUES (19, 'admin2', 'root2', 'root@qq.com2', '1008644'); + + +``` + +创建实体类 + +```java +public class User { + private Integer id; + private String username; + private String password; + private String email; + private String phone; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public User() { + } + + public User(Integer id, String username, String password, String email, String phone) { + this.id = id; + this.username = username; + this.password = password; + this.email = email; + this.phone = phone; + } + @Override + public String toString() { + return "User{" + + "id=" + id + + ", username='" + username + '\'' + + ", password='" + password + '\'' + + ", email='" + email + '\'' + + ", phone='" + phone + '\'' + + '}'; + } + +} + + +``` + +创建maven项目 + +```java + + + 4.0.0 + + org.example + mybatis + 1.0-SNAPSHOT + + + UTF-8 + 1.9 + 1.9 + + + + + + junit + junit + 4.11 + test + + + + mysql + mysql-connector-java + 8.0.19 + + + + org.mybatis + mybatis + 3.5.4 + + + + org.junit.jupiter + junit-jupiter + RELEASE + compile + + + + + + + + + + + src/main/java + + **/*.properties + **/*.xml + + false + + + + + + +``` + +配置mybatis的主配置文件 + +```java + + + + + + + +--> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +编写mybatis工具类 + +```java +public class MyBatisUtils { + + private static SqlSessionFactory factory = null; + + static { + //读取mybatis.xml配置文件 + String config="mybatis.xml"; + try { + //将配置文件加入到流中 + InputStream in = Resources.getResourceAsStream(config); + //创建factory对象 + factory = new SqlSessionFactoryBuilder().build(in); + + } catch (IOException e) { + e.printStackTrace(); + } + + + } + public static SqlSession getSqlSession(){ + SqlSession sqlSession = null; + if (factory!=null){ + //如果 factory!=null 就创建 sqlSession对象 + sqlSession = factory.openSession(false);//非自动提交事务 + } + + return sqlSession; + } +} + +``` + +定义接口 + +```java +public interface UserManagerDao { + + /** + * 查询所有的数据 用于视图展示 + * @return 返回一个List集合 + */ + public List queryUser(); + + + /** + * 添加 + * @param user 一个user对象 + * @return 成功返回true 失败返回false + */ + public Boolean addUser(User user); + + /** + * 删除用户 + * @param id 需要删除的用户id + * @return 成功返回true 失败返回false + */ + public Boolean delUser(String id); + + /** + * 修改用户信息 + * @param user 需要一个user对象 + * @return 成功返回true 失败返回false + */ + public Boolean updateUser(User user); + + /** + * 按照用户名查找用户 + * @param name 需要查找的用户名 + * @return 返回一个List集合 + */ + public List likeUser(String name); + + + +} + +``` + +xml文件 + +```java + + + + + + + + + + insert into t_user values(#{id},#{username},#{username},#{email},#{phone}) + + + + delete from t_user where id=#{id} + + + + update t_user set username=#{username},password=#{password},email=#{email},phone=#{phone} where id=#{id} + + + + +``` + +编写daoImpl + +```java + +public class UserManagerDaoImpl implements UserManagerDao { + + /** + * 查询所有的数据 用于视图展示 + * + * @return 返回一个List集合 + */ + @Override + public List queryUser() { + //获取sqlSession对象 + SqlSession sqlSession = MyBatisUtils.getSqlSession(); + String sqlId = "com.mybatis.dao.UserManagerDao.queryUser"; + //执行sql语句 + List userList = sqlSession.selectList(sqlId); + // sqlSession.commit(); //mybatis默认不会手动提交事务,在修改数据之后要 提交事务 + //关闭连接 + sqlSession.close(); + return userList; + } + + + /** + * 添加 + * + * @param user 一个user对象 + * @return 成功返回true 失败返回false + */ + @Override + public Boolean addUser(User user) { + //获取sqlSession对象 + SqlSession sqlSession = MyBatisUtils.getSqlSession(); + String sqlId = "com.mybatis.dao.UserManagerDao.addUser"; + //执行sql语句 + int updateCount = sqlSession.update(sqlId,user); + sqlSession.commit(); //mybatis默认不会手动提交事务,在修改数据之后要 提交事务 + //关闭连接 + sqlSession.close(); + if(updateCount>0){ + return true; + }else{ + return false; + } + + } + + /** + * 删除用户 + * + * @param id 需要删除的用户id + * @return 成功返回true 失败返回false + */ + @Override + public Boolean delUser(String id) { + //获取sqlSession对象 + SqlSession sqlSession = MyBatisUtils.getSqlSession(); + String sqlId = "com.mybatis.dao.UserManagerDao.delUser"; + //执行sql语句 + int delete = sqlSession.delete(sqlId, id); + sqlSession.commit(); //设置为自动提交事务 + //关闭连接 + sqlSession.close(); + if(delete>0){ + return true; + }else { + return false; + } + + } + + /** + * 修改用户信息 + * + * @param user 需要一个user对象 + * @return 成功返回true 失败返回false + */ + @Override + public Boolean updateUser(User user) { + //获取sqlSession对象 + SqlSession sqlSession = MyBatisUtils.getSqlSession(); + String sqlId = "com.mybatis.dao.UserManagerDao.updateUser"; + //执行sql语句 + int updateCount = sqlSession.update(sqlId,user); + sqlSession.commit(); //设置为自动提交事务 + //关闭连接 + sqlSession.close(); + if(updateCount>0){ + return true; + }else { + return false; + } + + } + + /** + * 按照用户名查找用户 + * + * @param name 需要查找的用户名 + * @return 返回一个List集合 + */ + @Override + public List likeUser(String name) { + SqlSession sqlSession = MyBatisUtils.getSqlSession(); + String sqlId = "com.mybatis.dao.UserManagerDao.likeUser"; + List userList = sqlSession.selectList(sqlId, name); + sqlSession.commit(); + //关闭连接 + sqlSession.close(); + return userList; + } +} + +``` + +Test类 + +```java +class UserManagerDaoImplTest { + + UserManagerDaoImpl userManagerDao = new UserManagerDaoImpl(); + + @Test + void queryUser() { + List userList = userManagerDao.queryUser(); + for (User user : userList) { + System.out.println(user); + } + } + @Test + void ListUser() { + + SqlSession sqlSession = MyBatisUtils.getSqlSession(); + UserManagerDao userDao = sqlSession.getMapper(UserManagerDao.class); + List userList = userDao.queryUser(); + for (User user : userList) { + System.out.println(user); + } + } + + @Test + void addUser() { + User user = new User(null,"admin","root","root@qq.com","1008644"); + Boolean flag = userManagerDao.addUser(user); + System.out.println(flag); + + } + + @Test + void delUser() { + Boolean flag = userManagerDao.delUser("23"); + System.out.println(flag); + } + + @Test + void updateUser() { + User user = new User(19,"admin2","root2","root@qq.com2","1008644"); + Boolean flag = userManagerDao.updateUser(user); + System.out.println(flag); + } + + @Test + void likeUser() { + List userList = userManagerDao.likeUser("admin"); + for (User user : userList) { + System.out.println(user); + } + } +} + +``` + -- Gitee