搭建MyBatis
1、MyBatis简介
- MyBatis原是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation 迁移到了Google Code,随着开发团队转投Google Code旗下, iBatis3.x正式更名为MyBatis。
- 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。
- 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。
- 可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。
2、创建Mybatis示例
MyBatis的官方文档是https://mybatis.org/mybatis-3/zh/index.html,可根据官方的内容创建一个Mybatis示例。
①创建一个maven项目,在pom.xml中导入MyBatis、mysql、日志等相关依赖。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18<!--日志-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>6.0.6</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.3</version>
</dependency>②在资源文件夹下创建MyBatis全局配置文件mybatis-config.xml。MyBatis 的全局配置文件包含了影响 MyBatis 行为甚深的设置(settings)和属性(properties)信息、如数据库连接池信息等,指导着MyBatis进行工作。
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
<configuration>
<!--resourse:引用类路径资源-->
<!--url:网络或磁盘资源-->
<properties resource="jdbc.properties"></properties>
<settings>
<!--开启驼峰命名-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<!--resource表示从类路径下找资源-->
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
</configuration>③创建mysql的相关配置信息的配置文件jdbc.properties:
1
2
3
4jdbc.url =jdbc:mysql://127.0.0.1:3306/User
jdbc.driver = com.mysql.cj.jdbc.Driver
jdbc.username = root
jdbc.password =<数据库密码>在mysql中创建User数据库并在其中新建一个t_users表,里面有初始数据:
并在项目中创建对应的bean:
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
33
34
35
36
37
38public class User {
private Integer id ;
private String userName ;
private String password ;
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 String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String toString() {
return "User{" +
"id=" + id +
", userName='" + userName + '\'' +
", password='" + password + '\'' +
'}';
}
}④创建SQL映射文件,此映射文件的作用就相当于是定义Dao接口的实现类如何工作,这也是我们使用MyBatis时编写的最多的文件。这里在资源文件夹下创建mapper/UserMapper.xml文件。
1
2
3
4
5
6
7
8
9
10
<!-- namespace 必须跟 UserDao 接口的全限定名称一致 -->
<mapper namespace="com.example.dao.UserDao">
<select id="getAllUsers" resultType="com.example.bean.User" >
SELECT * FROM t_users;
</select>
</mapper>对应的UserDao接口为:
1
2
3public interface UserDao {
List<User> getAllUsers();
}⑤在资源文件夹下新建日志的配置文件log4j.xml:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<param name="Encoding" value="UTF-8" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m (%F:%L) \n" />
</layout>
</appender>
<logger name="java.sql">
<level value="debug" />
</logger>
<logger name="org.apache.ibatis">
<level value="info" />
</logger>
<root>
<level value="debug" />
<appender-ref ref="STDOUT" />
</root>
</log4j:configuration>⑥编写测试文件。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20public class MybatisTest {
public static void main(String[] args) throws IOException {
//1.根据全局配置文件创建一个sqlSessionFactory
//SqlSessionFactory是SqlSession工厂,负责创建SqlSession对象
//SqlSession:sql会话(代表和数据库的一次会话)
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//2.获取和数据库的一次会话:getConnection()
SqlSession sqlSession = sqlSessionFactory.openSession();
//3.使用SqlSession操作数据库,先获取到dao接口实现
UserDao mapper = sqlSession.getMapper(UserDao.class);
//4.调用方法
List<User> allUsers = mapper.getAllUsers();
System.out.println(allUsers);
}
}执行结果: