-环境搭建
1.使用maven创建项目
在pom.xml中添加项目依赖,这里项目最少需要配置mybatis和数据库的相关依赖即可,非常的easy
<dependency> <groupId>org.mybatisgroupId> <artifactId>mybatisartifactId> <version>3.5.5version> dependency> <dependency> <groupId>mysqlgroupId> <artifactId>mysql-connector-javaartifactId> <version>8.0.13version> dependency>
初次使用时相关的问题也有不少,比如jar包下载过慢啊,甚至因为网络原因maven连接不到仓库的问题,修改一下maven中的setting.xml试一下。
查看项目确认是否导包完成。
junit和log4j是用来测试和打印日志的,通过pom.xml的dependency的标签进行配置。
2.起步
为了节省各位看客老爷们的时间,先贴一张图,如果明白的话后面就不用再看了:
准备工作
创建数据库-表,bean类和Dao接口
DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` int(11) NOT NULL auto_increment, `username` varchar(32) NOT NULL COMMENT '用户名称', `birthday` datetime default NULL COMMENT '生日', `sex` char(1) default NULL COMMENT '性别', `address` varchar(256) default NULL COMMENT '地址', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
1 package mybatis.CRUD.bean; 2 3 4 import java.util.Date; 5 6 public class User { 7 private int id; 8 private String username; 9 private Date birthday; 10 private String sex; 11 private String address; 12 13 //生成的get和set方法 14 15 @Override 16 public String toString() { 17 return "User{" + 18 "id=" + id + 19 ", username='" + username + '\'' + 20 ", birthday=" + birthday + 21 ", sex='" + sex + '\'' + 22 ", address='" + address + '\'' + 23 '}'; 24 } 25 }
package mybatis.CRUD.dao; import mybatis.CRUD.bean.QueryBean; import mybatis.CRUD.bean.User; import java.util.List; public interface IUserDao { public ListfindALL(); }
配置Mybatis配置文件
既然jar包已经导入,下一步,就如同其他框架一样,进行xml的配置步骤:
第一个配置文件 SqlMapConfig.xml(当然你也可以使用你喜欢的任何名字):
xml version="1.0" encoding="UTF-8"?>
这是config配置文件的头部,也不是一定是这个样子的,如果你使用的是mybatis4.X的版本,一定要注重头部是否有变化。
接着是一个
<configuration> <environments default="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/mybatis_study?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT"/> <property name="username" value="root"/> <property name="password" value="12345"/> dataSource> environment> environments> <mappers> <mapper resource="mybatis/CRUD/IUserDaoMapper.xml"/> <mapper resource="mybatis/CRUD/IRealUserDaoMapper.xml"/> mappers> configuration>
注意:Mysql 8.X driver与url的写法和5.X是不同的。而且注意‘&’在xml文件中的转义‘&’
然后就是配置mapper,为我们的UserDao接口创建一个Mapper,然后登记在SqlMapConfig中。
IUserDaoMapper.xml
头部:
DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
我们接口中只有一个查询所有的方法,所以在mapper中写一个findALL方法的条目
现在其实已经完事大吉了,我们可以编写一个测试方法来测试他们看能不能正常的读数据
public static void main(String[] args)throws Exception { //1.读取配置文件 InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml"); //2.创建SqlSessionFactory工厂 SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); SqlSessionFactory factory = builder.build(in); //3.使用工厂生产SqlSession对象 SqlSession session = factory.openSession(); //4.使用SqlSession创建Dao接口的代理对象 IUserDao userDao = session.getMapper(IUserDao.class); //5.使用代理对象执行方法 Listusers = userDao.findAll(); for(User user : users){ System.out.println(user); } //6.释放资源 session.close(); in.close(); }
运行结果:
总结:
其实从SqlMapConfig开始画起有让人摸不到头脑,但是如果仔细研究一下main函数中的代码,还是非常容易理解上面这张图的。
用IO流读入SqlMapConfig,也就是Mybatis的主配置---》然后加载Mappers中Mapper---》然后就是创建factory生产session---》由于接口不能产生对象,利用session产生一个代理对象---》代理的对象调用findALL----》找到配置中的sql语句和返回类型---》剩下的就交给框架了---》最后就是打印和关闭session和流;结束。