Mybatis✔
环境:
JDK 13.0.2
tomcat 9.0.3
mybatis 3.5.4
mysql 8
入门 早期为:ibatis:apache
2010年被Google收购改称:Mybatis
主要作用:简化JDBC操作,实现数据的持久化。
ORM:Object Relational Mapping,可以使开发人员像操作对象一样操作数据库
mybatis是ORM的一种实现
下载 之前看过的一个教程是使用Idea的,也就是直接使用依赖库导入,这次看的是导入jar使用。
选择Getting Started
会有Maven方式,当然使用Idea就可以直接复制代码框内代码到idea中,但这次选择jar的超链接。
就来到了熟悉的github,在最新版本下,有三个选项,这里选择第一个zip包下载。
下好之后是个zip,
打开以后目录文件如图,
lib文件夹存放mybatis的一些依赖包,
license就是字面意思 许可证,
mybatis-3.5.4.jar
即要用到的jar,
.pdf即使用说明书,
NOTICE也是字面意思 注意事项。
使用 简单实用一下:
导包 打开eclipse,新建一个JAVA项目,因为mybatis是操控数据库的,所以暂时可以先间隔Javaproject试一下。
这里起名“TestMyBatis”,将mybatis-3.5.4.jar
拖到src里面,顺便add to buildpath,添加环境。
建表 打开cmd或者使用navicat,因为我的navicat建数据库总是会有数据编码混乱的问题,我一般建表都是用cmd。
创建实体类及映射关系 创建实体类 Person
构建这个类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 private String id;private String name;private int age;public Person () { } public Person (String id, String name, int age) { super (); this .id = id; this .name = name; this .age = age; } public String getId () { return id; } public void setId (String id) { this .id = id; } public String getName () { return name; } public void setName (String name) { this .name = name; } public int getAge () { return age; } public void setAge (int age) { this .age = age; }
创建配置文件映射表和类的映射 .xml
文件
点这里转换视图
在刚刚的.pdf文件中有大概的配置方法,打开后找到“Exploring Mapped SQL Statements ”
下面有
1 2 3 4 5 6 7 <?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 ="org.mybatis.example.BlogMapper" > <select id ="selectBlog" resultType ="Blog" > select * from Blog where id = #{id} </select > </mapper >
直接复制,到刚刚的xml中,更改namespace
后面的内容为自己的xmltop.eshyee.entity.personMapper
改完之后
1 2 3 4 5 6 7 <?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 ="top.eshyee.entity.personMapper" > <select id ="queryPersonById" resultType ="Person" parameterType ="String" > select * from person where id= #{id} </select > </mapper >
在创建一个配置文件,在src下创建一个叫config.xml
的文件。
在pdf中查找“Building SqlSessionFactory from XML ”
这里需要提前准备好一个用来链接的jar MySQL connector
网址:https://dev.mysql.com/downloads/connector/j/
选zip,下好之后,里面乱七八糟的东西就不细致分析了,会点工地英语看看就好。主要使用mysql-connector-java-8.0.19.jar
。拖到eclipse ,add一下环境。
配置xml如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 <?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 ="com.mysql.cj.jdbc.Driver" /> <property name ="url" value ="jdbc:mysql://localhost:3306/test?useSSL=false& serverTimezone=UTC" /> <property name ="username" value ="你的用户名" /> <property name ="password" value ="你的密码" /> </dataSource > </environment > </environments > <mappers > <mapper resource ="top/eshyee/entity/personMapper.xml" /> </mappers > </configuration >
ok写个测试用例
1 2 3 4 5 6 7 8 9 10 11 12 public static void main (String[] args) throws IOException { Reader reader = Resources.getResourceAsReader("config.xml" ); SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder ().build(reader); SqlSession session= sessionFactory.openSession(); String statement = "top.eshyee.entity.personMapper.queryPersonById" ; Person person=session.selectOne(statement,"1234567890" ); System.out.println(person.toString()); session.close(); }
同时在person下写一个toString()方法,这个可以自己来定,只要能看到person里的值就🉑。
测试 测试以下~~在数据库中插入一行数据
run一下test
🆗
常见问题
写完之后run的时候除了问题,报了一坨错其中有个timezone …想起来url写的jdbc:mysql://localhost:3306/test
,然后后面加了?useSSL=false&serverTimezone=UTC
,结果还不对,就百度了一下&
在xml中是一种很神奇的存在得写成&
.
Resource导包的时候选择org.apache.ibatis.io.*;
总结 相对于写DButil方便了不少。