MyBatis入门教程
MyBatis是一款优秀的持久层框架,它的前身是IBatis,是apache的一个开源项目。它支持定制化SQL、存储过程以及高级映射。我也是早有耳闻它的大名,当然,它很多时候都是和SpringMVC一起使用的,但是日常学习,我还是想从它本身单独使用学起。这是一篇非常基础的入门案例,从新建项目开始讲起,自己也是一个菜鸟,还请大家见谅,若文中有错误,欢迎指出。
涉及的知识点,以及我认为需要注意到的地方,我都在源代码中以注释的形式,进行解释了,若有遗漏欢迎补充。闲话到此为止,上图。
- 新建maven项目
不用勾选Create from archetype,直接next。填写项目名这些步骤就略过啦。
- 在pom.xml中导入依赖。
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.32</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.8</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.5</version>
</dependency>
-
根据数据库内容创建Dao类
public class User implements Serializable { private Integer id; private String user_name; private String password; private String name; private Date birthday; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUser_name() { return user_name; } public void setUser_name(String user_name) { this.user_name = user_name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } @Override public String toString() { return "com.yjk.daomain.User{" + "id=" + id + ", user_name='" + user_name + '\'' + ", password='" + password + '\'' + ", name='" + name + '\'' + ", birthday=" + birthday + '}'; } }
创建完Dao类后创建它的接口
/*
* 用户的持久层接口
* */
public interface IUserMapper {
List<User> findAll();
}
-
创建MyBatis的主配置文件
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <!--mybatis的主配置文件--> <configuration> <!-- 配置环境 --> <environments default="mysql"> <!-- 配置mysql的环境--> <environment id="mysql"> <!-- 配置事务类型 --> <transactionManager type="JDBC"></transactionManager> <!-- 配置数据源(连接池) --> <dataSource type="POOLED"> <!-- 配置数据库的四个基本信息--> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/ssmdemo"/> <property name="username" value="root"/> <property name="password" value=""/> </dataSource> </environment> </environments> <!-- 指定映射配置文件位置,映射配置文件指的是每个dao独立的配置文件 --> <mappers> <mapper resource="com/yjk/dao/IUserMapper.xml"/> </mappers> </configuration>
-
创建映射配置文件
<?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.yjk.dao.IUserMapper"> <!-- 配置查询所有(这里的id是IUserMapper里面的方法名称) --> <select id="findAll" resultType="com.yjk.daomain.User"> select * from user </select> </mapper>
-
创建log4j的配置文件
log4j.rootLogger=DEBUG,A1 log4j.logger.org.apache=DEBUG log4j.appender.A1=org.apache.log4j.ConsoleAppender log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c]-[%p] %m%n
-
在test中创建测试类
public class MyBatisTet { public static void main(String[] args) throws IOException { // 1.读取配置文件 InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml"); // 2.创建SqlSessionFactory工厂 SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); SqlSessionFactory sqlSessionFactory = builder.build(inputStream); // 3.使用工厂生产SqlSession对象 SqlSession session = sqlSessionFactory.openSession(); // 4.使用SqlSession创建Dao接口的代理对象 IUserMapper userMapper = session.getMapper(IUserMapper.class); // 5.使用代理对象执行方法 List<User> users = userMapper.findAll(); for (User user:users){ System.out.println(user); } // 6.释放资源 session.close(); inputStream.close(); } }
这里可能会出现一个问题,就是Resources这个包导错了,如果这里出现错误,请先检查自己导入的包是不是org.apache.ibatis.io.Resources这个包。
- 最后运行项目
就可以检查我们的操作是否生效了。若以后有时间,会更新SpringMVC与MyBatis整合使用的入门教程。