首页
碎碎念
东邻西舍
本站信息
前来吐槽
Search
1
openwrt系统上安装第三方插件
11,242 阅读
2
ubuntu下zerotier的基本使用教程
6,125 阅读
3
给小米R3G更换系统:从padavan刷成openwrt
2,510 阅读
4
为padavan安装SSL证书
1,389 阅读
5
openwrt无线中继功能:实现不插网线就能上网
1,377 阅读
学习点滴
Java
Web前端
Linux
踩坑实录
折腾搞机
关于建站
只言片语
登录
Search
标签搜索
Linux
建站
踩坑实录
Ubuntu
Java
MySQL
CSS
折腾搞机
HTML
SQL
MyBatis
Nginx
只言片语
树莓派
OpenWrt
路由器
SSL
Maven
Git
随笔
知识分子没文化
累计撰写
78
篇文章
累计收到
63
条评论
首页
栏目
学习点滴
Java
Web前端
Linux
踩坑实录
折腾搞机
关于建站
只言片语
页面
碎碎念
东邻西舍
本站信息
前来吐槽
搜索到
6
篇与
MyBatis
的结果
2021-06-18
在IDEA中配置Maven开发环境
[Meting] [Music server="netease" id="1842801269" type="song"/] [/Meting] 目录: 前言 1. 下载Maven安装文件 2.解压并配置环境变量 2.1、windows端 2.2、Linux端 3.设置IDEA 3.1 修改Maven全局配置文件 3.2 修改路径 3.3 导入Maven依赖 环境说明: 系统:win10专业版 deepin V20 IDE:IDEA 2020.3 java:jdk1.8 Maven:3.8.1 前言 Maven是一个构建自动化工具,主要用于Java项目,由Apache软件基金会托管,它以前是Jakarta项目的一部分。Maven还可用于构建和管理用 C#、Ruby、Scala 和其他语言编写的项目。 Maven解决了构建软件的两个方面:软件是如何构建的,以及它的依赖关系。与早期的工具(如Apache Ant)不同,它对构建过程使用约定,并且只需要写下异常。 XML 文件描述了正在构建的软件项目、它对其他外部模块和组件的依赖、构建顺序、目录和所需的插件。它带有预定义的目标,用于执行某些明确定义的任务,例如代码编译及其打包。 Maven从一个或多个存储库(例如Maven 2 Central Repository)动态下载Java库和Maven插件,并将它们存储在本地缓存中。下载工件的本地缓存也可以使用本地项目创建的工件进行更新。公共存储库也可以更新。 Maven官网:http://maven.apache.org/ 1. 下载Maven安装文件 Maven下载页面:http://maven.apache.org/download.cgi 进入下载页面,根据不同的系统选择前两个二进制文件之一下载就可以了。如果打算自行构建Maven,那就下载后面的源码文件。 2.解压并配置环境变量 部分参考资料:Maven – Installing Apache Maven 2.1、windows端 将下载下来的“.zip”压缩文件解压,这里以解压到“D:\Software”为例进行说明。 “计算机”图标上点击右键->属性->高级系统设置(win10 20H2需要在属性窗口的“相关设置”标签中才能找到高级系统设置),在高级系统设置窗口的右下角点击“环境变量”。 “环境变量”分为两种,一种是“用户变量”,这里面配置的环境变量只适用于当前计算机用户,另一种是“系统变量”,适用于这台计算机上的所有用户。具体设置成哪种环境变量看个人习惯。 添加如下两条环境变量,其中MAVEN_HOME的值是Maven文件的解压路径: 环境变量名称 环境变量值 MAVEN_HOME D:\Software\apache-maven-3.8.1 Path %MAVEN_HOME%\bin 其实第一个环境变量的名称并不是固定的,在其他的配置环境变量的教程中名称也可能不同。这个只是习惯而已,只要保证环境变量值没什么问题即可。 第二条Path也可以写成“D:\Software\apache-maven-3.8.1\bin”,这里引用了上条设置的MAVEN_HOME,表示的是Maven安装路径下的bin文件夹 全都添加完之后,两连“确定”完成环境变量的配置。 2.2、Linux端 Linux下也可以用以下命令下载安装包: wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.8.1/binaries/apache-maven-3.8.1-bin.tar.gz 下载下来的是一个后缀名为“.tar.gz”的压缩包。解压压缩包到/usr/下: sudo tar -xvf apache-maven-3.8.1-bin.tar.gz -C /usr/ # 当然解压目录不一定非得是/usr/,换成其他目录也可以,后面配置环境变量时目录就要修改 修改环境变量,编辑/etc/profile文件: sudo nano /etc/profile 在末尾加入以下环境变量,“/usr/apache-maven-3.8.1”是Maven安装文件所在的目录: export PATH=/usr/apache-maven-3.8.1/bin:$PATH 然后ctrl + o保存,ctrl + x退出,再输入以下命令使环境变量生效: source /etc/profile 至此就算配置好了环境变量。使用“mvn -v”命令检验是否配置成功,若无法识别命令,部分Linux环境下可能还需要重启一遍电脑才能生效。 3.设置IDEA 此处以Win10下的IDEA开发环境为例,Linux下相关操作都是一样的。 在cmd控制台窗口中输入以下命令查看Maven版本,检验是否配置成功: mvn -v 没有错误的话,输出结果是这样: 3.1 修改Maven全局配置文件 Maven有一个全局配置文件,里面是Maven的一些设置,该文件存放在Maven安装路径的conf文件夹中,修改的就是这个配置文件。关于这个文件的详解可以看这篇:Maven全局配置文件settings.xml详解 - 洪墨水 - 博客园 (cnblogs.com) Maven需要一个文件夹来存放从Maven仓库下载到本地的依赖包,为了减少对系统盘的空间占用,建议将这个文件夹设置到其他分区。找到配置文件里的settings标签,在标签里面加上: <!-- 中间的路径是本地Maven依赖包的存放路径 --> <localRepository>D:\programmeSoftware\MavenRepository</localRepository> Maven仓库在国外,在国内下载速度比较慢,所以还需要将镜像源更改为国内的镜像源。找到<mirrors>标签,往标签内加入阿里云的镜像源配置: <mirror> <id>nexus-aliyun</id> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror> 3.2 修改路径 首先在IDEA中新建一个Maven项目,步骤与新建普通Java项目类似,项目类型选择成Maven。 依次点击“File”->“settings”(或者快捷键Ctrl+Alt+s)打开设置界面,然后选择“Build,Execution,Deployment”->“Maven”,设置如下: “User settings file”是Maven全局配置文件的存放路径,“Local repository”是从Maven仓库下载到本地的依赖包的存放路径。设置完了之后点击右下角“Apply”。 需要注意的是,这个设置仅适用于现在打开的Maven项目,为了将这个更改应用到新建的Maven项目上,还需要再进行设置。依次点击“File”->“New Projects Settings”->“Settings for New Projects...”,同样选择“Build,Execution,Deployment”->“Maven”,进行与上面同样的设置即可。 3.3 导入Maven依赖 Maven仓库地址:Maven Repository: Search/Browse/Explore (mvnrepository.com) 项目里用到的依赖包都是从这个网站上找的,以Mybatis为例,说一下依赖包的导入方式。 在网站顶部的搜索栏中搜索“Mabatis” 选择第一项,然后会看到该软件有很多个不同的版本,版本可以随便选择,但是一般为了防止项目中出现与软件版本相关的这类“玄学问题”,还是选择后面使用人数多的一项吧 点击版本号即可进入该版本界面,复制下方“Maven”标签下的那一串<dependency>标签 然后打开项目根目录下的pom.xml文件,将内容粘贴至<dependencies>(这个是复数的dependency)标签内部,注意缩进。导入依赖的第一步,完成。 当然由于只是导入了配置,本地并没有相应的依赖包,所以会看到粘贴的配置中会有红线报错,碰到报错先别慌,看第二步。此时需要在IDEA中要重载一遍项目的Maven依赖配置。有这么几种方法: 在左侧文件目录中的项目名称上单击右键,依次选择“Maven”->“Reload project” 在IDEA窗口右侧列表找到“Maven”,并单击展开菜单,点击菜单左上角刷新重载按钮 在打开的pom.xml文件界面上单击右键(只有在pom.xml文件上单击右键才可以,其他文件单击右键选项中没有Maven),依次选择“Maven”->“Reload project” 不管使用哪一种方式,最后结果都是窗口右下角会出现一个进度条,开始往本地下载pom.xml文件中导入的依赖项。等待这个进度条走完,原来的报错也就消失了。 在以后修改或添加了Maven依赖以后,都可以用这几种方法重新载入项目的Maven依赖配置。
2021年06月18日
489 阅读
0 评论
0 点赞
2021-06-03
【踩坑实录】mybatis项目报错:...IncompleteElementException: Could not find parameter map...
[Meting] [Music server="netease" id="436487129" type="song"/] [/Meting] 环境说明: 系统:Win10专业版 mysql 5.7 问题再现 mybatis进行数据库查询操作时,报错信息如下: org.apache.ibatis.builder.IncompleteElementException: Could not find parameter map com.langp.mapper.CollegeMapper.int 错误原因 Mapper方法中的参数类型是int,应该是用parameterType属性,而不是用parameterMap属性 解决方法 将parmeterMap属性改成parameterType属性即可
2021年06月03日
335 阅读
0 评论
0 点赞
2021-06-03
【踩坑实录】mybatis项目报错:org.junit ... ParameterResolutionException No ParameterResolver registered for parameter ... in method ...
[Meting] [Music server="netease" id="28126755" type="song"/] [/Meting] 环境说明: 系统:Win10专业版 mysql 5.7 问题再现 往数据库在进行插入操作时,报错信息如下: org.junit.jupiter.api.extension.ParameterResolutionException No ParameterResolver registered for parameter [com.langp.entity.College arg0] in method [public void com.langp.mapper.CollegeMapperTest.insert(com.langp.entity.College)]. 错误原因 进行单元测试的时候,单元测试方法中有参数 解决方法 将单元测试方法中相应的参数移除即可
2021年06月03日
749 阅读
0 评论
1 点赞
2021-05-31
MyBatis初级入门
[Meting] [Music server="netease" id="394748" type="song"/] [/Meting] 目录: 一、简介 二、创建项目 step 1:导入Maven依赖 step 2:创建mybatis核心配置文件 step 3:编写工具类 step 4:编写代码 step 5:测试 官方文档: mybatis – MyBatis 3 | 简介 github地址: GitHub - mybatis/mybatis-3: MyBatis SQL mapper framework for Java Maven仓库地址: Maven Repository: org.mybatis » mybatis (mvnrepository.com) 一、简介 MyBatis 是一款优秀的持久层框架 它支持自定义SQL、存储过程以及高级映射。 MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。 MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。 MyBatis 本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis。 2013年11月迁移到Github。 二、创建项目 先准备数据库,执行SQL语句: // 创建表 CREATE TABLE user(id INT NOT NULL AUTO_INCREMENT primary key,name char(20),updateTime datetime); // 插入两条数据 INSERT INTO user(name,updateTime) value("张三",sysdate()); INSERT INTO user(name,uddateTime) value("李四",sysdate()); 建好一个Maven项目。 step 1:导入Maven依赖 <dependencies> <!--Mybatis--> <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.3</version> </dependency> <!--mysql驱动--> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version> </dependency> <!--Junit--> <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api --> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <version>5.7.0</version> <scope>test</scope> </dependency> </dependencies> step 2:创建mybatis核心配置文件 文件名:mybatis-config / mybatis-cfg 文件内容:mybatis – MyBatis 3 | 入门 <?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> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="jdbc:mysql://localhost:3306/mybatis?setUnicode=true&characterEncoding=utf8"/> <property name="url" value="${url}"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <!-- 每一个mapper.xml配置文件都需要在mybaits核心文件中注册--> <mappers> <!-- 使用文件路径的方式配置--> <mapper resource="com/langp/dao/UserMapper.xml"></mapper> </mappers> </configuration> 在这个过程中配置数据库信息,或者可以在同一目录下再新建一个数据库配置文件jdbc.properties,里面写入数据库信息: # 与JDBC中的配置十分类似 driver:com.mysql.jdbc.Driver url:jdbc:mysql://localhost:3306/mybatis?setUnicode=true&characterEncoding=utf8 username:root password:root step 3:编写工具类 将加载Sqlsession的过程写成一个工具类,方便调用 public class Utils { private static SqlSessionFactory sqlSessionFactory; static{ try { String resource = "mybatis-config.xml"; // 使用mybatis // 1.获取SqlSessionFactory对象 InputStream is = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(is); } catch (IOException e) { e.printStackTrace(); } } /** * 获取SqlSession的实例 * SqlSession完全包含了面向数据库执行SQL命令所需的所有方法 * @return sqlSessinFactory */ public static SqlSession getSession() { if (sqlSessionFactory != null) { return sqlSessionFactory.openSession(); } return null; } } 为了更节省内存空间,使用单例模式来定义工具类会更好: public class Util { // 懒汉式单例 private static Util util; static SqlSessionFactory sqlSessionFactory; private Util() { String resource = "mybatis-config.xml"; InputStream is = null; try { is = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(is); } catch (IOException e) { e.printStackTrace(); } } // 单例模式下获取Util实例 public static Util getInstance(){ if (util == null) { util = new Util(); } return util; } // 获取Session实例 // Session中包含了执行SQL语句的所有方法 public static SqlSession getSession() { if (sqlSessionFactory != null) { return sqlSessionFactory.openSession(); } return null; } } step 4:编写代码 实体类 即业务中涉及到的类 public class User { private int id; private String name; private String pwd; private Date updateTime; public User() { } public User(int id, String name, String pwd, Date updateTime) { this.id = id; this.name = name; this.pwd = pwd; this.updateTime = updateTime; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } public Date getUpdateTime() { return updateTime; } public void setUpdateTime(Date updateTime) { this.updateTime = updateTime; } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", pwd='" + pwd + '\'' + ", updateTime=" + updateTime + '}'; } } Dao接口 —— 实现类Mapper public interface UserMapper { List<User> getUserList(); } 接口实现类 —— Mapper文件 原来的UserDaoImpl转换为一个接口的Mapper配置文件 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!--namespace绑定一个Dao/mapper接口--> <mapper namespace="com.langp.dao.UserMapper"> <!-- 查询语句--> <!-- 注意其中的id,和resultType返回类型的名称--> <select id="getUserList" resultType="com.langp.pojo.User"> SELECT * FROM mybatis.user; </select> </mapper> step 5:测试 创建测试类 class UserMapperTest { @org.junit.jupiter.api.Test void getUserList() { // 获取sqlSession对象 SqlSession sqlSession = MybatisUtils.getSession(); // 执行sql UserMapper mapper = sqlSession.getMapper(UserMapper.class); List<User> userList = mapper.getUserList(); for (User user : userList) { System.out.println(user); } // 关闭sqlSession sqlSession.close(); } }
2021年05月31日
517 阅读
0 评论
0 点赞
2021-05-25
【踩坑实录】mybatis项目报错:“Caused by: .....Exception: 1 字节的 UTF-8 序列的字节 1 无效”
[Meting] [Music server="netease" id="66282" type="song"/] [/Meting] 环境说明: 系统:win10 专业版 开发环境:IDEA JDK版本:1.8 mysql:5.5 mybatis:3.5.3 Junit:5.7.0 问题再现: 运行mybatis项目时,控制台出现报错信息: Caused by: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: 1 字节的 UTF-8 序列的字节 1 无效 错误原因: 归根结底是编码的原因,xml文件开头的文档编码设置为了UTF-8: 而由于项目本身的默认编码是GBK,因此xml文件保存时的编码是GBK,声明的xml文档编码与实际编码不一致,就出现了问题 解决方法: 更改项目编码即可。 在IDEA界面打开setting(点击File->setting或者快捷键Ctrl+Alt+S),依次选择Editor->File encodings,将Project Encoding的值从GBK更改为UTF-8。 再次运行,问题消失。
2021年05月25日
166 阅读
0 评论
0 点赞
2021-05-25
踩坑实录|mybatis项目报错:...Exception: Type interface UserMapper is not known to the MapperRegistry
[Meting] [Music server="netease" id="227012" type="song"/] [/Meting] 环境说明: 系统:win10 专业版 开发环境:IDEA JDK版本:1.8 mysql:5.5 mybatis:3.5.3 Junit:5.7.0 问题再现: mybatis项目运行时报错,报错信息如下: org.apache.ibatis.binding.BindingException: Type interface com.langp.dao.UserMapper is not known to the MapperRegistry. at org.apache.ibatis.binding.MapperRegistry.getMapper(MapperRegistry.java:47) at org.apache.ibatis.session.Configuration.getMapper(Configuration.java:779) at com.langp.dao.UserMapperTest.getUserList(UserMapperTest.java:28) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.lang.reflect.Method.invoke(Method.java:498) ····· Process finished with exit code -1 错误原因: 报错信息中出现了Type interface com.langp.dao.UserMapper is not known to the MapperRegistry,简单翻译一下就是:类型接口com.langp.dao.UserMapper不为MapperRegistry所知。 所以这个错误肯定是与mapper有关系的。每一个Mapper.xml都需要在mybatis核心配置文件中进行注册,由于mybatis的核心配置文件mybatis-config.xml中缺少对应接口的Mapper.xml,所以运行时就会报错。 解决方法: 在mybatis的核心配置文件中添加如下内容: <!-- 每一个mapper.xml配置文件都需要在mybaits核心文件中注册 --> <mappers> <mapper resource="com/langp/dao/UserMapper.xml"></mapper> </mappers> 其中,resource属性的值是接口对应Mapper.xml文件。添加之后即可解决。
2021年05月25日
919 阅读
0 评论
1 点赞