创建一个新mybatis工程
这玩意上课学过,但实际上只是一知半解,又过了这么久,连怎么操作都忘了,现在这个记录是临时查教程查翻译写的
写之前先点首歌吧,不要让自己写东西的时候愁眉苦脸,那会让自己很快失去兴趣。点一首一般男性。
正文:
首先是环境:idea+jdk1.8+mysql
环境配置的问题我以后会专门写一篇,至少适合我目前开发学习与游戏的环境搭建, 包括系统安装。
新建工程(ps:老年人字体)
1.标题写了,maven项目,所以左边选maven,标志是大大的m,以后还会遇到这个标志,用得上。
2.勾一下模板创建
(顺道记单词)这个是原型、模板,学习阶段会经常用现成的模板。
3.maven-模板-webapp,这样就懂了
很多人会选这个多半是因为外语不好,我外语也不好,但我翻译用的勤。
写名字:随便写了一个mmmmm,因为是自己的工程所以无所谓
文件地址:因为我自信所以用中文目录,一般人建议用英文目录(
应该是文件名起名规范起的目录,英文字符,阿拉伯数字,英文标点符号,且不适用关键字。原因是有很多小软件小平台,它没有中文字库,识别不了中文的文件路径,值得注意的是有时候我们会使用中文符号,也有可能识别不了。)
groupid组名,公司名,可以瞎写,我哪有公司,没写,认它默认吧。
artifactid产品名,也是可以随便写的,默认的话它会和name一样。
version版本,一共就一个版本,哪有什么版本号,默认就完事。
选择你安装maven的位置,如果没有的话idea会帮你下一个(网速极慢,比毒盘逊雷还慢)
然后finish
新窗口右下角会弹这个,选自动
第一次的话底栏会显示下载进度,这个软件所有下载进度都会在这里显示。
完成后的文件目录是这样,这都是自动配置的。
如果不出来的话这里有刷新,网络问题的话不是我的解决范畴,网速靠钱,过墙靠缘。
这个地方叫控制台我记得,成功了的话这里显示build success
去配置编译路径和artifact
正常情况下这里直接就有内容了
缘分到了啥都不用手动设。
设Tomcat
点击步骤都在这了,
名字起不起无所谓,习惯性改个tomcat9
选择自己安装好的tomcat的位置,因人而异,如果你是默认安装的话,那么位置是:
C:\Program Files\Apache Software Foundation\Tomcat 9.0
点这个去deployment部署
部署artifact,这个时候返回来设置热部署,方便以后修改
选这个,不知道为什么,试出来的,《硬试教育》。
往下翻有个这个,把红线部分删掉,为了以后方便。
部署artifact,这个时候返回来设置热部署,方便以后修改
现在这里两个地方就有选择了,全都改成这个,每次保存都会同步。不记得英语的话就是最长的。
下面的端口默认没问题就默认,不然就改一个。
这里有个默认的主页index,自己在里边写点啥,就可以跑起来测试了。
喜闻乐见,端口被占用,这个时候被占用,都懒得去查,八成就是java占了,
这回改一个就行。
执行会跳到浏览器,到这里算是成功,乱码先不管,那是因为我没设这个网页的中文编码。
改成全英文就没事了。
到这键maven工程完成,现在在这里面搭mybatis
在pom.xml里的dependencies里
加入mybatis的包
代码
<dependency>
<groupId>org.mybatis</groupId>//包的来源,
<artifactId>mybatis</artifactId>//这个包的名字
<version>3.3.0</version>//版本,我之前说没用的版本,他们更新的多就有用了
</dependency>
<!-- mysql驱动包 -->
<dependency>
<groupId>mysql</groupId>//sql一起放进去了,反正要用
<artifactId>mysql-connector-java</artifactId>
<version>5.1.29</version>
</dependency>
因为junit原本就有,所以不写在这里了,junit版本我这里是4.11,以后更新的话再说。
粘贴进去的时候注意一下粘贴位置,刷新一下
在main下建文件夹,java里写代码,resources里放的是配置代码
java下建多层文件夹,按照习惯,com(大体类型,别的也可以,名字而已).个人名字(或者别的).pojo(这个也是习惯实体类放这里)
在pojo里建实体类,这里我就简单粘贴了教程的user实体(实际上大部分新手写的都是这个,模板,好用)
public class User {
private int uid;//自己起
private String uname;//随便设,按着起名规范来就好
public int getUid() {//下面这些都是自动生成的,get and set
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
}
在resources里建mybatis-config.xml文件,用来配置部署环境,链接数据库。
注意数据库名字,用户名,密码要匹配。
在resources下新建mapper文件夹
在mapper里创建UserMapper.xml
<?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">
<!-- mapper为映射的根节点,namespace指定Dao接口的完整类名
mybatis会依据这个接口动态创建一个实现类去实现这个接口,
而这个实现类是一个Mapper对象
id ="接口中的方法名"
parameterType="传入的参数类型"
resultType = "返回实体类对象,使用包.类名"-->
<mapper namespace="com.zyl.pojo.User">
<select id="findById" parameterType="int" resultType="com.zyl.pojo.User" >
select * from users where uid = #{id}
</select>
</mapper>
再次感谢前人留下的注释让我又看懂了一点。
注意这个mapper要和前面的mybatis-config里的mappers标签对上。
最后测试一下就算成功了。
新建Test文件夹到main下,建UserTest
package Test;
import com.***.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 org.junit.Test;
import java.io.IOException;
import java.io.Reader;
public class UserTest {
@Test
public void userFindByIdTest(){
//定义读取文件名
String resources = "mybatis-config.xml";
//创建流
Reader reader=null;
try {
//读取mybatis-config.xml文件到reader对象中
reader= Resources.getResourceAsReader(resources);
} catch (IOException e) {
e.printStackTrace();
}
//初始化mybatis,创建SqlSessionFactory类的实例
SqlSessionFactory sqlMapper=new SqlSessionFactoryBuilder().build(reader);
//创建session实例
SqlSession session=sqlMapper.openSession();
//传入参数查询,返回结果
User user=session.selectOne("findById",1);
//输出结果
System.out.println(user.getUname());
//关闭session
session.close();
}
}
成功,和原作者不一样是因为我的数据库删了,里面没数据,显示deployed successfully也说明成功了。
总用时半天,主要是因为我菜,如果有错误的话,敬请指正。
最后感谢两位大佬的教程,致谢:
IntelliJ IDEA创建maven web项目(IDEA新手适用)
https://blog.csdn.net/czc9309/article/details/80304074
使用IDEA Maven搭建mybatis环境
https://www.cnblogs.com/wvae/p/9607684.html
多谢zhangcong_vip的指路。