首先我们打开神器IDEA,选择创建maven工程(有关maven环境的配置请看此IDEA集成maven环境),填入grouid和artifactid
然后选择工作空间和工程名,点击finish,进入mybatis页面
在pom.xml中我们引入需要的jar包
代码如下
<packaging>jar</packaging> <dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.5</version> </dependency> </dependencies>
我们可以看到字体是红色的,似乎并没有引入,点击import Changes即可,他会自动帮忙引入
可以发现字体变正常了,当然mybatis主要是链接数据库,我们还需要引入数据库的包,我们再导入日志包和单元测试包
如下
pom.xml的完整代码如下
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.zhanshen</groupId> <artifactId>mybatisTest1</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.5</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.48</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.12</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> </dependencies> </project>
成功后就可以看到我们的包全部导入进来了
对于log4j这个日志文件,我们需要在resource目录下新建一个log4j.properties如下
里边内容如下
### 设置### log4j.rootCategory = debug,CONSOLE,LOGFILE ### 输出信息到控制抬 ### log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE ### 输出DEBUG 级别以上的日志到=E://logs/error.log ### log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern = %d(ISO8601) %-6r [%15.15t] %-5p %30.30c %x - %m\n ### 输出ERROR 级别以上的日志到=E://logs/error.log ### log4j.appender.LOGFILE = org.apache.log4j.FileAppender log4j.appender.LOGFILE.file = /home/zhanshen/IdeaProjects/log/axis.log #注意这是你自己指定的文件位置 log4j.appender.LOGFILE.Append = true log4j.appender.LOGFILE.layout = org.apache.log4j.PatternLayout log4j.appender.LOGFILE.layout.ConversionPattern = %d(ISO8601) %-6r [%15.15t] %-5p %30.30c %x - %m\n
然后我们在数据库中新建一张测试表
代码如下
create table user( id int primary key auto_increment, username varchar(255) default null, birthday datetime default null, sex varchar(255) default null, address varchar(255) default null)engine=InnoDB default charset=utf8;
insert into user (username, birthday, sex, address) values ('张三', '2000-05-02', '男', '北京市昭阳区'); insert into user (username, birthday, sex, address) values ('李四', '2010-05-02', '女', '北京市昭阳区'); insert into user (username, birthday, sex, address) values ('王五', '2010-11-02', '女', '北京市昭阳区'); insert into user (username, birthday, sex, address) values ('胡六', '2020-11-02', '女', '北京市昭阳区');
下面我们在工程的src下的java目录下新建如下结构的Java实体类文件
并在User.java中写入数据库中字段,生成get和set方法,和toString方法
代码如下
package com.zhanshen.domain; import java.io.Serializable; import java.util.Date; public class User implements Serializable { private Integer id; private String username; private Date birthday; private String sex; private String address; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "User{" + "id=" + id + ", username='" + username + '\'' + ", birthday=" + birthday + ", sex='" + sex + '\'' + ", address='" + address + '\'' + '}'; } }
然后我们再新建dao包,目录结构如下
IUserDao.java的代码如下,习惯性在类名前边加一个I表示是接口类
package com.zhanshen.dao; import com.zhanshen.domain.User; import java.util.List; /** * 用户的持久层接口 */ public interface IUserDao { /** * 查询所有操作 */ List<User> findAll(); }
然后我们在resources包下新建一个SqlMapConfig.xml
文件里边内容如下
<?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> </configuration>
然后我们会在configuration标签里边写入我们的配置环境
如下
<?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="mysql"> <!--这里的default的值是自己定的,就是要和下边的environment的id相对应--> <!--配置MySQL环境--> <environment id="mysql"> <!--配置实物的类型--> <transactionManager type="JDBC"></transactionManager> <!--配置数据源 或者连接池--> <dataSource type="POOLED"> <!--配置连接数据库的四个基本信息--> <property name="driver" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/test?useSSL=false&characterEncoding=utf-8&serverTimezone=GMT"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <!--这里配置制定配置文件的位置,与resources包里边的通目录下的IUserDao.xml相对应--> <mappers> <mapper resource="com/zhanshen/dao/IUserDao.xml"/> </mappers> </configuration>
这是mbatis的主配置文件, 既然mybatis是映射的关系,那么也需要每个文件的配置文件
我们在resources里边新建一个xml文件目录如下,目录与主配置mappers里边映射的目录结构是一样的,对应着java包下边的IUserDao.java
在IUserDao.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="com.zhanshen.dao.IUserDao"> <!--配置查询所有--> <select id="findAll" resultType="com.zhanshen.domain.User"> <!--这里的查询语句对应着IUserDao.java接口类里边的方法,其中resultType就是要返回的类型,就是一个一个封装的User实体类--> select * from user </select> </mapper>
配置内容大致完成,似乎配置起来没完没了,我们分析一下它的结构
1.首先我们在pom.xml里边导入各个坐标,就类似于之前的把jar包放到目录里,这里边有连接数据库的jar包
2.然后我们在resources包里边新建了SqlMapConfig.xml文件,来配置我们的连接数据库的基本信息,以及,将来我们要查询的sql语句放到了哪里
3.我们写好查询数据库的bean类和查询接口,之前我们可以为接口写上实现类,这次我们把实现的过程交给了第四部,就是在resources里边新建和接口类目录结构一模一样的配置文件,注意这里的目录结构一定要一样,否则找不到
4.我们在配置文件中通过标签的形式来创建sql语句,并定义namespace来和SqlMapConfig.xml里边的mapper配置对应起来
这样我们的mybatis配置基本完成.
然后我们在test里边写上测试类,目录如下,若没有可自己创建
里边写上测试代码
package com.zhanshen.test; import com.zhanshen.dao.IUserDao; import com.zhanshen.domain.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 java.io.IOException; import java.io.InputStream; import java.util.List; public class MybatisTest { public static void main(String[] args) throws IOException { //1.读取配置文件 InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml"); //2.创建SqlSessionFactory工厂 SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); SqlSessionFactory factory = builder.build(inputStream); //3.使用工厂生产SqlSession对象 SqlSession session = factory.openSession(); //4.使用SqlSession创建Dao接口的代理对象 IUserDao userDao = session.getMapper(IUserDao.class); //5.使用代理对象执行方法 List<User> users = userDao.findAll(); for (User user : users) { System.out.println(user); } //6.释放资源 session.close(); inputStream.close(); } }
分了好几部走,使用了工厂
可以看到我们的结果都出来了
本博客根据黑马教程总结