前置工作http://t.csdnimg.cn/RVvn4完成了前置工作后的IDEA应该是这样的
正式进入mybaties的入门
第一步,打开mybaties的官网文档https://mybatis.net.cn/getting-started.html本次入门,将从XML构造SQL工厂
第一步,创建一个XML文件,随意名字
新建→文件→输入名词,后缀为xml
只要后缀是xml就可以了,不要在乎图标
将下面这段代码复制进xml中
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="你的数据库驱动"/>
<property name="url" value="你的数据库连接"/>
<property name="username" value="你的数据库用户"/>
<property name="password" value="你的数据库密码"/>
</dataSource>
</environment>
</environments>
</configuration>
重点在那几个中文标识,你的数据库驱动
你的数据库连接
你的数据库用户
你的数据库密码
上面四个,在初次使用时,绝大多数问题都是路径问题,代码层面因为有IDEA的补全,很少会出现问题的
所以在入门的时候,请自己观察路径的写法!!!
第一步:你的数据库驱动
先学会找这个驱动
看到这个mysql-connector-java-8.0.25.jar
点击com.mysql
点击cj
点击jdbc
查看到驱动的英文
Driver,右键
有一个复制引用——com.mysql.cj.jdbc.Driver
将这个掩盖掉你的数据库驱动
第二步:你的数据库连接
在前置操作中,会有一个这个
看见URL没,把它复制掩盖掉你的数据库连接
第三部:你的数据库用户,你的数据库密码
就是上面你输入的用户和密码
完成后如图
请保持XMl的设置的整洁性,要不然到时候找错误会非常痛苦
请保证路径的整洁性和完整性,不要少复制,多粘贴
例如:{}!@#这种
进到main文件将这段代码复制进去
public class main {
public static void main(String[] args) throws FileNotFoundException {
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(new FileInputStream("你的路径引用"));
try(SqlSession sqlSession = build.openSession();){
System.out.println("连接成功");
}
}
}
进行第一次连接,如果连接成功,是不会报错的
问题1:数据库的连接路径出问题!
问题2:数据库的驱动路径出问题!
问题3:XML的文件完整性出问题
解决方法,通过工具直接复制引用
XML的完整,把上面的XML完整的复制下来!
或者进到myBAtis官网文档,复制——与上面我提供的最大区别是中文和英文的区别
建议尝试的在上面三个问题中删除一点东西,再进行连接,可以通过ctrl+z撤回操作
第一个阶段完成,通过MyBatis成功连接数据库,第二个阶段使用数据库
第一步:新建一个包,创建一个类,专门用来获取数据库的内容(你也可以直接创建一个类)
这个类的顺序和名字,要与你的数据库相同
确保你的内容与数据库的列的完全一致,你可以尝试一下不同!
@Data是辣椒框架里的内容,作用是简化代码量
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package com.test.entitly;
public class library {
int book_ID;
String book_Name;
double book_money;
public library() {
}
public int getBook_ID() {
return this.book_ID;
}
public String getBook_Name() {
return this.book_Name;
}
public double getBook_money() {
return this.book_money;
}
public void setBook_ID(int book_ID) {
this.book_ID = book_ID;
}
public void setBook_Name(String book_Name) {
this.book_Name = book_Name;
}
public void setBook_money(double book_money) {
this.book_money = book_money;
}
public boolean equals(Object o) {
if (o == this) {
return true;
} else if (!(o instanceof library)) {
return false;
} else {
library other = (library)o;
if (!other.canEqual(this)) {
return false;
} else if (this.getBook_ID() != other.getBook_ID()) {
return false;
} else if (Double.compare(this.getBook_money(), other.getBook_money()) != 0) {
return false;
} else {
Object this$book_Name = this.getBook_Name();
Object other$book_Name = other.getBook_Name();
if (this$book_Name == null) {
if (other$book_Name == null) {
return true;
}
} else if (this$book_Name.equals(other$book_Name)) {
return true;
}
return false;
}
}
}
protected boolean canEqual(Object other) {
return other instanceof library;
}
public int hashCode() {
int PRIME = true;
int result = 1;
result = result * 59 + this.getBook_ID();
long $book_money = Double.doubleToLongBits(this.getBook_money());
result = result * 59 + (int)($book_money >>> 32 ^ $book_money);
Object $book_Name = this.getBook_Name();
result = result * 59 + ($book_Name == null ? 43 : $book_Name.hashCode());
return result;
}
public String toString() {
int var10000 = this.getBook_ID();
return "library(book_ID=" + var10000 + ", book_Name=" + this.getBook_Name() + ", book_money=" + this.getBook_money() + ")";
}
}
没错,一个注释就可以完成上面的代码,里面有很多方法什么get,set,tostring等等方法
你不用@Data注释,你就要手动把上面的内容打一遍了。。。
第二步:新建一个xml文件
将这段代码复制一下
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="目前阶段该属性随便">
<select id="用来调用的名字" resultType="以什么类型返回">
select * from library.book_base
</select>
</mapper>
数据库中select是查看
Mapper内包含了数据库的增删改查,本次以查为主
目前阶段该属性随便
用来调用的名字
以什么类型返回
第一个顾名思义:随便什么名字
第二个名字:随便什么名字
第三个,还记得第一步的建的那个类吗,引用它
技巧:你可以手动输入该路径,先输入main所在的java包然后编译器会自动显示
完成后是这样的
把这段代码复制进第一步创建的XML中,目的引用刚刚上面设置的XML
<mappers>
<mapper url="file:TestMapper.xml"/>
</mappers>
你会发现,这样就和官方文档的一模一样了
注意了,file:这个代码是url的协议之一,千万不要忘记打了,很重要很重要
补全main的代码
public class main {
public static void main(String[] args) throws FileNotFoundException {
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(new FileInputStream("mybatis-config.xml"));
try(SqlSession sqlSession = build.openSession();){
System.out.println("连接成功");
List<Object> list = sqlSession.selectList("第二阶段的XML设置的id");//以列的形式查看
list.forEach(System.out::println);//快速遍历输出
}
}
}
第二阶段的XML设置id,替换
运行,完美
如果你细心的话,你会发现第一个XML与第二个XML上配置有些区别
一个是config(配置)一个是mapper(制图者)
上面的截图来自官网文档下面
这个过程配上代码(main里的)
在main类里设立一个建筑者,通过调用建筑者去建筑一个工厂,工厂可以产出无数个sqlsession
*
在代码层面上一遍是不可能出问题的,更多是路径问题
例如没有打file:协议,路径多了一个些符号
解决方法,挨个试一试