mybatis简单案例源码详细【注释全面】——测试层(UserMapperTest.java)

 /**  
* @Title: UserMapperTest.java
* @Package org.test
* @Description: TODO该方法的主要作用:
* @author A18ccms A18ccms_gmail_com  
* @date 2017-10-5 下午7:51:50
* @version V1.0  
*/
package org.test;import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;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 org.apache.log4j.Logger;
import org.dao.UserMapper;
import org.entity.Users;
import org.junit.Test;
import org.util.MybatisUtils;/**   *    * 项目名称:ssm_chop1   * 类名称:UserMapperTest   * 类描述:   * 创建人:Mu Xiongxiong  * 创建时间:2017-10-5 下午7:51:50   * 修改人:Mu Xiongxiong   * 修改时间:2017-10-5 下午7:51:50   * 修改备注:   * @version    *    */
public class UserMapperTest {/*** @Fields logger :该字段的意思:日志*/private Logger logger = Logger.getLogger(UserMapperTest.class);/*** @Fields sqlSession :该字段的意思:sqlsession*/private SqlSession sqlSession = null;/*** @Fields rel :该字段的意思:区分增删改的是否成功*/private int rel = 0;/*** * @Description: 该方法的主要作用:不是用工具类进行测试* @Title: test* @param   设定文件  * @return  返回类型:void   * @throws*/@Testpublic void test_noMybatisUtil(){String resource = "mybatis-config.xml";int count = 0;SqlSession sqlSession  = null;try {//1.获取mybatis-config.xml的输入流InputStream inputStream = Resources.getResourceAsStream(resource);//2.创建SqlSessionFaction对象,完成对配置文件的读取SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);//3.创建sqlsessionsqlSession = factory.openSession();//4.调用mapper文件来对数据进行操作,必须把mapper文件引入mybatis-config.xml中count = sqlSession.selectOne("org.dao.UserMapper.count");logger.debug("UserMapperTest count----"+count);System.out.println(count);} catch (IOException e) {// TODO 异常执行块!e.printStackTrace();}finally{sqlSession.close();}}/*** * @Description: 该方法的主要作用:使用工具类进行测试* @Title: test_MybatisUtils* @param   设定文件  * @return  返回类型:void   * @throws*/@Testpublic void test_MybatisUtils(){SqlSession sqlSession = null;int count = 0;try {sqlSession = MybatisUtils.createSqlSession();count = sqlSession.selectOne("org.dao.UserMapper.count");} catch (Exception e) {// TODO 异常执行块!e.printStackTrace();}finally{MybatisUtils.closeSqlSession(sqlSession);}System.out.println(count);}/*** * @Description: 该方法的主要作用:调用接口进行查询* @Title: test_Icount* @param   设定文件  * @return  返回类型:void   * @throws*/@Testpublic void test_Icount(){SqlSession sqlSession = null;int count = 0;try {sqlSession = MybatisUtils.createSqlSession();//接口UserMapper的名字必须要和映射文件的名字一样count = sqlSession.getMapper(UserMapper.class).count();} catch (Exception e) {// TODO 异常执行块!e.printStackTrace();}finally{MybatisUtils.closeSqlSession(sqlSession);}System.out.println("总记录数是:"+count);}/*** * @Description: 该方法的主要作用:使用接口的方式查询所有的数据* @Title: test_IgetUserList* @param   设定文件  * @return  返回类型:void   * @throws*/@Testpublic void test_IgetUserList(){SqlSession sqlSession = null;List<Users> userList = new ArrayList<Users>();try {sqlSession = MybatisUtils.createSqlSession();userList = sqlSession.getMapper(UserMapper.class).getUserList();} catch (Exception e) {// TODO 异常执行块!e.printStackTrace();}finally{MybatisUtils.closeSqlSession(sqlSession);}for (Users users : userList) {System.out.println("用户名是"+users.getUserName());}}/*** * @Description: 该方法的主要作用:根据用户名进行模糊查询信息* @Title: test_IgetUsersByName* @param   设定文件  * @return  返回类型:void   * @throws*/@Testpublic void test_IgetUsersByName(){SqlSession sqlSession  = null;Users users = null;try {sqlSession = MybatisUtils.createSqlSession();users = sqlSession.getMapper(UserMapper.class).getUsersByName("明");} catch (Exception e) {// TODO 异常执行块!e.printStackTrace();}finally{MybatisUtils.closeSqlSession(sqlSession);}System.out.println(users.getPhone());}/*** * @Description: 该方法的主要作用:根据用户对象进行查询* @Title: test_IgetUserListByUser* @param   设定文件  * @return  返回类型:void   * @throws*/@Testpublic void test_IgetUserListByUser(){SqlSession sqlSession = null;List<Users> users1 = null;Users users = new Users();try {users.setUserName("李");users.setUserrole(2);sqlSession = MybatisUtils.createSqlSession();users1  = sqlSession.getMapper(UserMapper.class).getUserListByUser(users);} catch (Exception e) {// TODO 异常执行块!e.printStackTrace();}finally{MybatisUtils.closeSqlSession(sqlSession);}for (Users user : users1) {System.out.println(user.getUserName());}}/*** * @Description: 该方法的主要作用:查询用户列表,参数是Map* @Title: test_IgetUsersListByMap* @param   设定文件  * @return  返回类型:void   * @throws*/@Testpublic void test_IgetUsersListByMap(){SqlSession sqlSession = null;List<Users> usersList = null;try {sqlSession = MybatisUtils.createSqlSession();Map<String, String> map = new HashMap<String, String>();map.put("userName", "李");map.put("userrole", "2");usersList = sqlSession.getMapper(UserMapper.class).getUsersListByMap(map);} catch (Exception e) {// TODO 异常执行块!e.printStackTrace();}finally{MybatisUtils.closeSqlSession(sqlSession);}for (Users user : usersList) {System.out.println(user.getUserName());}}/*** * @Description: 该方法的主要作用:连接查询* @Title: test_IgetUserListAndRole* @param   设定文件  * @return  返回类型:void   * @throws*/@Testpublic void test_IgetUserListAndRole(){SqlSession sqlSession = null;List<Users> userList = null;try {sqlSession = MybatisUtils.createSqlSession();Users users = new Users();users.setUserName("李");users.setUserrole(2);userList = sqlSession.getMapper(UserMapper.class).getUserListAndRole(users);} catch (Exception e) {// TODO 异常执行块!e.printStackTrace();}finally{MybatisUtils.closeSqlSession(sqlSession);}for (Users users : userList) {System.out.println(users.getAddress());}}/*** * @Description: 该方法的主要作用:添加用户信息* @Title: test_IsaveUser* @param   设定文件  * @return  返回类型:void   * @throws*/@Testpublic void test_IsaveUser(){try {sqlSession =  MybatisUtils.createSqlSession();Users users  = new Users();users.setAddress("山东省济南市");users.setBirthday(new Date());users.setCreateBy(1);users.setCreationDate(new Date());users.setGender("1");users.setModifyBy(2);users.setModifyDate(new Date());users.setPhone("15066675713");users.setUserCode("wangwei");users.setUserName("王伟");users.setUserPassword("123456");users.setUserrole(1);rel = sqlSession.getMapper(UserMapper.class).saveUser(users);if(rel>0){System.out.println("添加成功");}else{System.out.println("添加失败");}} catch (Exception e) {// TODO 异常执行块!e.printStackTrace();}finally{sqlSession.commit();MybatisUtils.closeSqlSession(sqlSession);}}/*** * @Description: 该方法的主要作用:根据编号修改* @Title: test_IupdateUser* @param   设定文件  * @return  返回类型:void   * @throws*/@Testpublic void test_IupdateUser(){try {sqlSession  = MybatisUtils.createSqlSession();Users users  = new Users();users.setAddress("山东省济南市");users.setBirthday(new Date());users.setCreateBy(1);users.setCreationDate(new Date());users.setGender("1");users.setModifyBy(2);users.setModifyDate(new Date());users.setPhone("15066675713");users.setUserCode("wangwei");users.setUserName("李伟");users.setUserPassword("123456");users.setUserrole(1);users.setId(19);rel = sqlSession.getMapper(UserMapper.class).updateUser(users);if(rel>0){System.out.println("修改成功");}else{System.out.println("修改失败");}} catch (Exception e) {// TODO 异常执行块!e.printStackTrace();}finally{sqlSession.commit();MybatisUtils.closeSqlSession(sqlSession);}}/*** @Description: 该方法的主要作用:根据id删除数据* @Title: test_IdelUser* @param   设定文件  * @return  返回类型:void   * @throws*/@Testpublic void test_IdelUser(){try {sqlSession = MybatisUtils.createSqlSession();rel = sqlSession.getMapper(UserMapper.class).delUser(19);if(rel>0){System.out.println("删除成功!");}else{System.out.println("删除失败!");}} catch (Exception e) {// TODO 异常执行块!e.printStackTrace();}finally{sqlSession.commit();MybatisUtils.closeSqlSession(sqlSession);}}/*** * @Description: 该方法的主要作用:根据id查询用户信息* @Title: test_IgetUsersById* @param   设定文件  * @return  返回类型:void   * @throws*/@Testpublic void test_IgetUsersById(){try {sqlSession = MybatisUtils.createSqlSession();Users users = sqlSession.getMapper(UserMapper.class).getUsersById(15);System.out.println(users.getUserName());} catch (Exception e) {// TODO 异常执行块!e.printStackTrace();}finally{MybatisUtils.closeSqlSession(sqlSession);}}/*** * @Description: 该方法的主要作用:根据角色id查询用户信息* @Title: test_IgetUsersByRoleId* @param   设定文件  * @return  返回类型:void   * @throws*/@Testpublic void test_IgetUsersByRoleId(){try {sqlSession = MybatisUtils.createSqlSession();List<Users> userList = sqlSession.getMapper(UserMapper.class).getUsersByRoleId(2);for (Users users : userList) {System.out.println(users.getUserName());}} catch (Exception e) {// TODO 异常执行块!e.printStackTrace();}finally{MybatisUtils.closeSqlSession(sqlSession);}}/*** * @Description: 该方法的主要作用:根据userName和userrole动态查询用户信息* @Title: test_IgetUsersListByUserNameAndRole_if* @param   设定文件  * @return  返回类型:void   * @throws*/@Testpublic void test_IgetUsersListByUserNameAndRole_if(){try {sqlSession = MybatisUtils.createSqlSession();List<Users> userList = sqlSession.getMapper(UserMapper.class).getUsersListByUserNameAndRole_if(null, 3);for (Users users : userList) {System.out.println(users.getUserName());}} catch (Exception e) {// TODO 异常执行块!e.printStackTrace();}finally{MybatisUtils.closeSqlSession(sqlSession);}}/*** * @Description: 该方法的主要作用:动态根据用户名和角色id查询用户列表,where and|or* @Title: getUsersListByUserNameAndRole_ifAndwhere* @param   设定文件  * @return  返回类型:void   * @throws*/@Testpublic void test_IgetUsersListByUserNameAndRole_ifAndwhere(){try {sqlSession = MybatisUtils.createSqlSession();List<Users> userList = sqlSession.getMapper(UserMapper.class).getUsersListByUserNameAndRole_ifAndwhere(null, 2);for (Users users : userList) {System.out.println(users.getUserName());}} catch (Exception e) {// TODO 异常执行块!e.printStackTrace();}finally{MybatisUtils.closeSqlSession(sqlSession);}}/*** * @Description: 该方法的主要作用:使用is+set动态修改用户表信息* @Title: updateUser_ifAndSet* @param   设定文件  * @return  返回类型:void   * @throws*/@Testpublic void test_IupdateUser_ifAndSet(){try {sqlSession  = MybatisUtils.createSqlSession();Users users  = new Users();users.setAddress("山东省济南市");users.setBirthday(new Date());users.setCreateBy(1);users.setCreationDate(new Date());users.setGender("1");users.setModifyBy(2);users.setModifyDate(new Date());users.setPhone("15066675713");users.setUserCode("wangwei");users.setUserName("李伟");users.setUserPassword("123456");users.setUserrole(1);users.setId(15);rel = sqlSession.getMapper(UserMapper.class).updateUser_ifAndSet(users);if(rel>0){System.out.println("修改成功");}else{System.out.println("修改失败");}} catch (Exception e) {// TODO 异常执行块!e.printStackTrace();}finally{sqlSession.commit();MybatisUtils.closeSqlSession(sqlSession);}}/*** * @Description: 该方法的主要作用:动态根据用户名和角色id查询用户列表,使用trim进行查询用户信息,where and|or* @Title: getUsersListByUserNameAndRole_ifAndwhere_trim* @param   设定文件  * @return  返回类型:void   * @throws*/@Testpublic void test_IgetUsersListByUserNameAndRole_ifAndwhere_trim(){try {sqlSession = MybatisUtils.createSqlSession();List<Users> userList = sqlSession.getMapper(UserMapper.class).getUsersListByUserNameAndRole_ifAndwhere_trim("张", 3);for (Users users : userList) {System.out.println(users.getUserName());}} catch (Exception e) {// TODO 异常执行块!e.printStackTrace();}finally{MybatisUtils.closeSqlSession(sqlSession);}}/*** * @Description: 该方法的主要作用:使用trim代替set进行动态修改用户信息* @Title: updateUser_ifAndTrim* @param   设定文件  * @return  返回类型:void   * @throws*/@Testpublic void test_IupdateUser_ifAndTrim(){try {sqlSession  = MybatisUtils.createSqlSession();Users users  = new Users();users.setAddress("山东省济南市");users.setBirthday(new Date());users.setCreateBy(1);users.setCreationDate(new Date());users.setGender("1");users.setModifyBy(2);users.setModifyDate(new Date());users.setPhone("15066675713");users.setUserCode("wangwei");users.setUserName("李伟伟");users.setUserPassword("123456");users.setUserrole(1);users.setId(15);rel = sqlSession.getMapper(UserMapper.class).updateUser_ifAndTrim(users);if(rel>0){System.out.println("修改成功");}else{System.out.println("修改失败");}} catch (Exception e) {// TODO 异常执行块!e.printStackTrace();}finally{sqlSession.commit();MybatisUtils.closeSqlSession(sqlSession);}}/*** * @Description: 该方法的主要作用:根据用户角色列表,获取该角色刘表下用户列表信息foreach_array* @Title: test_IgetUsersByRoleId_foreach_array* @param   设定文件  * @return  返回类型:void   * @throws*/@Testpublic void test_IgetUsersByRoleId_foreach_array(){try {sqlSession = MybatisUtils.createSqlSession();Integer roleids [] = {1,2,3};List<Users> userList = sqlSession.getMapper(UserMapper.class).getUsersByRoleId_foreach_array(roleids);for (Users users : userList) {System.out.println(users.getUserName());}} catch (Exception e) {// TODO 异常执行块!e.printStackTrace();}finally{MybatisUtils.closeSqlSession(sqlSession);}}/*** * @Description: 该方法的主要作用:根据用户角色列表,获取该角色刘表下用户列表信息foreach_list* @Title: getUsersByRoleId_foreach_list* @param   设定文件  * @return  返回类型:void   * @throws*/@Testpublic void test_IgetUsersByRoleId_foreach_list(){try {sqlSession = MybatisUtils.createSqlSession();List<Integer> roleids = new ArrayList<Integer>();roleids.add(1);roleids.add(2);List<Users> userList = sqlSession.getMapper(UserMapper.class).getUsersByRoleId_foreach_list(roleids);for (Users users : userList) {System.out.println(users.getUserName());}} catch (Exception e) {// TODO 异常执行块!e.printStackTrace();}finally{MybatisUtils.closeSqlSession(sqlSession);}}/*** * @Description: 该方法的主要作用:根据用户角色列表和性别(多参数),获取该角色刘表下用户列表信息foreach_map* @Title: test_IgetUsersByRoleId_foreach_many_map* @param   设定文件  * @return  返回类型:void   * @throws*/@Testpublic void test_IgetUsersByRoleId_foreach_many_map(){try {sqlSession = MybatisUtils.createSqlSession();List<Integer> roleids = new ArrayList<Integer>();Map<String, Object> conditionmap = new HashMap<String, Object>();roleids.add(1);roleids.add(2);conditionmap.put("gender", 1);conditionmap.put("roleids", roleids);List<Users> userList = sqlSession.getMapper(UserMapper.class).getUsersByRoleId_foreach_many_map(conditionmap);for (Users users : userList) {System.out.println(users.getUserName());}} catch (Exception e) {// TODO 异常执行块!e.printStackTrace();}finally{MybatisUtils.closeSqlSession(sqlSession);}}/*** * @Description: 该方法的主要作用:根据用户角色列表(单参数),获取该角色刘表下用户列表信息foreach_map* @Title: getUsersByRoleId_foreach_one_map* @param   设定文件  * @return  返回类型:void   * @throws*/@Testpublic void test_IgetUsersByRoleId_foreach_one_map(){try {sqlSession = MybatisUtils.createSqlSession();List<Integer> roleids = new ArrayList<Integer>();Map<String, Object> conditionmap = new HashMap<String, Object>();roleids.add(1);roleids.add(2);conditionmap.put("rKey", roleids);List<Users> userList = sqlSession.getMapper(UserMapper.class).getUsersByRoleId_foreach_one_map(conditionmap);for (Users users : userList) {System.out.println(users.getUserName());}} catch (Exception e) {// TODO 异常执行块!e.printStackTrace();}finally{MybatisUtils.closeSqlSession(sqlSession);}}/*** * @Description: 该方法的主要作用:查询用户列表,使用choose* @Title: getUsersList_choose* @param   设定文件  * @return  返回类型:void   * @throws*/@Testpublic void test_IgetUsersList_choose(){try {sqlSession = MybatisUtils.createSqlSession();List<Users> userList = sqlSession.getMapper(UserMapper.class).getUsersList_choose(null,null,null,new Date());for (Users users : userList) {System.out.println(users.getUserName());}} catch (Exception e) {// TODO 异常执行块!e.printStackTrace();}finally{MybatisUtils.closeSqlSession(sqlSession);}}/*** * @Description: 该方法的主要作用:分页查询用户信息* @Title: getUserList_page* @param   设定文件  * @return  返回类型:void   * @throws*/@Testpublic void test_IgetUserList_page(){try {sqlSession = MybatisUtils.createSqlSession();List<Users> userList = sqlSession.getMapper(UserMapper.class).getUserList_page(4,3);for (Users users : userList) {System.out.println(users.getUserName());}} catch (Exception e) {// TODO 异常执行块!e.printStackTrace();}finally{MybatisUtils.closeSqlSession(sqlSession);}}
}



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/326977.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Visual Studio 2017 RC3支持.NET Core,延迟对Python的支持

Visual Studio 2017第三个候选版本上周发布&#xff0c;解决了之前发现的安装程序的小问题。由于这些问题得到了解决&#xff0c;现在值得关注的就是这次版本中更新了什么内容。&#xff08;版本是发布于1月27日的build 26127.00&#xff09; RC3版本中最值得关注的部分就是对N…

双向链表的(CRUD)

代码实现(CRUD) package com.atguigu.linkedlist;/*** 创建人 wdl* 创建时间 2021/3/19* 描述*/ public class DoubleLinkedListDemo {public static void main(String[] args) {//测试System.out.println("双向链表的测试");HeroNode2 hearo1 new HeroNode2(1, &q…

java读取Resources下文件

java读取Resources下文件_杰子的世界-CSDN博客_java获取resources下的文件 第四种&#xff0c; 读取路径 ResourceBundle bundle ResourceBundle.getBundle("config"); String url bundle.getString("url"); 1 2 该方法默认读取的是resources文件夹下的以…

达到年薪 40W 必需掌握的技术。

转载自 达到年薪 40W 必需掌握的技术。 很多人在问我&#xff0c;程序员如何拿高薪&#xff0c;如何做到年薪40W&#xff0c;其实总结出来还是一句话&#xff0c;你的技术决定你的能力已经薪资。 那么什么样的技术人才才能拿到一份Java行业里面的高薪呢&#xff1f;下面是我…

mybatis简单案例源码详细【注释全面】——Utils层(MybatisUtils.java)

/** * Title: MybatisUtils.java * Package org.util * Description: TODO该方法的主要作用&#xff1a; * author A18ccms A18ccms_gmail_com * date 2017-10-5 下午8:38:14 * version V1.0 */ package org.util;import java.io.IOException; import java.io.InputStrea…

虚拟研讨会:.NET的未来在哪里?

.NET生态系统在过去的一年中发生了很多事情。在几个方面发展非常迅速&#xff1a;Xamari、UWP、.NET Core、.NET native、F#和开源等等。 如果要关注细节&#xff0c;那大的景象难以描绘。因为在每个方面都有新的动作&#xff1a;跨平台、云、移动、Web应用和通用应用。开发人员…

iOS Charles 抓包

iOS Charles 抓包指南 - 从入门到精通_VictorZhang-CSDN博客_charles ios 下载安装包 Download a Free Trial of Charles • Charles Web Debugging Proxy

使用Servlet上传多张图片——访问提示

上传文件&#xff0c;我们在做项目中补课避免的&#xff0c;有时候我们需要上传单张或者单个文件&#xff0c;但是有时候我们就需要上传多个文件或者多张图片了&#xff0c;我们这里以多张&#xff08;4张&#xff09;图片为例&#xff0c;再多也都是一样的概念&#xff0c;接下…

云计算设计模式(六)——命令和查询职责分离(CQRS)模式

隔离&#xff0c;通过使用不同的接口&#xff0c;从操作读取数据更新数据的操作。这种模式可以最大限度地提高性能&#xff0c;可扩展性和安全性;支持系统在通过较高的灵活性&#xff0c;时间的演变;防止更新命令&#xff0c;从造成合并在域级别上的冲突。 背景和问题 在传统的…

Intellij IDEA 那些隐藏好用的小技巧

转载自 Intellij IDEA 那些隐藏好用的小技巧 概述 之前写了一篇介绍IntellIJ IDEA的文章《 Intellij Idea非常6的10个姿势 》&#xff0c;主要是列出一些平时大家可能没用过或者没怎么用&#xff0c;但是又非常好用的IntellIJ IDEA小技巧。由于篇幅原因&#xff0c;只是列出了…

约瑟夫(环)问题(Josephu)(单向环形链表)

问题描述 代码实现 package com.atguigu.linkedlist;import com.sun.org.apache.bcel.internal.generic.NEW;/*** 创建人 wdl* 创建时间 2021/3/19* 描述*/ public class Josepfu {public static void main(String[] args) {//测试一把看看构建的环形链表和遍历是否正确Circle…

使用Servlet上传多张图片——实体层(ProductInfo.java)

package orz.treeSquirrels.entity; /*** 商品信息表的实体类* author Administrator**/ public class ProductInfo {private int productId; //商品编号private String productName; //商品名称private float price; //商品价格private String details; //商品详情…

vue+vscode+nodejs 开发环境搭建

参考文献 vuevscodenodejs 开发环境搭建 - Desperador - 博客园 nodejs 指定全局安装路径和缓存路径 - Curedfisher - 博客园 安装配置nodejs并创建Vue项目 vscode下载地址&#xff1a; Documentation for Visual Studio Code nodejs安装配置 1.下载 地址&#xff1a; …

用数组模拟栈

思路分析 代码实现 package com.atguigu.stack;import com.sun.org.apache.xml.internal.dtm.ref.sax2dtm.SAX2DTM2;import java.net.ServerSocket; import java.util.ArrayList; import java.util.Scanner; import java.util.Stack;/*** 创建人 wdl* 创建时间 2021/3/20* 描述…

Redis PK Memcached,哪个更牛叉

转载自 Redis PK Memcached&#xff0c;哪个更牛叉 说到 redis 就会联想到 memcached&#xff0c;反之亦然。了解过两者的同学有那么个大致的印象&#xff1a; redis 与 memcached 相比&#xff0c;不仅支持简单的 key-value 数据类型&#xff0c;同时还提供 list,set,zset,ha…

CoreCLR源码探索(三) GC内存分配器的内部实现

在前一篇中我讲解了new是怎么工作的, 但是却一笔跳过了内存分配相关的部分.在这一篇中我将详细讲解GC内存分配器的内部实现.在看这一篇之前请必须先看完微软BOTR文档中的"Garbage Collection Design",原文地址是: https://github.com/dotnet/coreclr/blob/master/Doc…

使用Servlet上传多张图片——Dao层(BaseDao.java)

package orz.treeSquirrels.dao;import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List;/*** * * 项目名称&#xff1a;test_uploadFile …

vue学习1

P1 01_Vue学习目标03:50 P2 02_前端知识体系16:27 P3 03_前后端分离的演变史17:13 P4 04_前端MVVM模式09:31 P5 05_Vue是什么07:23 P6 06_第一个Vue应用程序07:06 P7 07_Vue实例声明周期05:35 P8 08_条件渲染06:59 P9 09_列表渲染03:34 P10 10_事件处理03:44…

使用Servlet上传多张图片——Dao层(ProductInfoDao.java)

package orz.treeSquirrels.dao;import orz.treeSquirrels.entity.ProductInfo;/*** 商品信息表的接口* author Administrator**/ public interface ProductInfoDao {//添加public int addProductInfo(ProductInfo pro);}对应的实现类(ProductInfoDaoImpl.java)&#xff1a; pa…