首先我们来讲解Mybatis的创建方法和全局配置教程。
Mybatis 创建方法
第一步:引入Mybatis依赖
你需要在项目中引入Mybatis的依赖,可以通过Maven或Gradle管理工具来引入。比如Maven的配置如下:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
第二步:创建Mybatis Config文件
MyBatis的配置文件是用于配置MyBatis工作时携带应信息的文件,通常我们会将配置文件命名为mybatis-config.xml
。配置文件的示例如下:
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>
这里的environment
标签定义了使用的环境,transactionManager
定义了事务管理器的类型,dataSource
定义了使用的数据源。mappers
标签中的mapper
定义了一个映射文件。
第三步:创建Mapper文件
在Mybatis中,Mapper是一种用来描述数据访问接口的XML文件,同样位于资源目录下。Mapper文件中定义了SQL语句的执行方式,以及与Java POJO之间的对应关系。示例如下:
<!-- org.mybatis.example.BlogMapper.xml -->
<mapper namespace="org.mybatis.example.BlogMapper">
<select id="selectBlog" resultType="Blog">
select * from Blog where id = #{id}
</select>
</mapper>
这里用namespace
指定了Mapper接口的完全限定名,select
标签指定了SQL语句以及返回类型。
第四步:创建SqlSessionFactory
SqlSessionFactory是Mybatis中的重要对象,它负责创建SqlSession,SqlSession用于和数据库之间的交互。示例如下:
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
这里使用Resources
类读取了配置文件,然后调用了SqlSessionFactoryBuilder
的build
方法创建了SqlSessionFactory
对象。
第五步:创建SqlSession
通过SqlSessionFactory
对象创建一个SqlSession
,用于和数据库交互。示例如下:
SqlSession sqlSession = sqlSessionFactory.openSession();
我们可以通过SqlSession对象的方法执行SQL语句,并获取到结果集。
全局配置教程
Mybatis的全局配置主要包含了连接池、日志、缓存、插件等方面的配置,以下是几个重要的配置项:
连接池配置
Mybatis默认提供了多个连接池实现,包括POOLED、UNPOOLED、JNDI等。我们可以在dataSource
标签中通过type
属性指定使用哪个连接池实现。
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
日志配置
Mybatis提供了多种日志实现,包括SLF4J、JDK_LOGGING、LOG4J、LOG4J2、COMMONS_LOGGING等。我们可以在configuration
标签下指定日志实现:
<configuration>
<settings>
<setting name="logImpl" value="LOG4J"/>
</settings>
</configuration>
缓存配置
Mybatis提供了多级缓存的支持,默认情况下Mybatis开启了2级缓存,但是我们也可以通过在Mapper
文件中添加cache
标签来自定义缓存,示例如下:
<cache eviction="LRU" flushInterval="60000" size="512" readOnly="true"/>
插件配置
Mybatis的插件是一种拦截器,可以在SQL的执行过程中进行拦截和修改,常用的插件包括分页插件、性能监控插件、拦截SQL参数插件等。通过实现Interceptor
接口和Plugin
注解,我们可以轻松地对SQL语句进行操作。示例如下:
@Intercepts({@Signature(type = StatementHandler.class, method = "query", args = {Statement.class, ResultHandler.class})})
public class MyInterceptor implements Interceptor {
public Object intercept(Invocation invocation) throws Throwable {
// do something
return invocation.proceed();
}
}
示例
示例一:查询语句
假设我们有一张名叫user
的数据库表,表结构如下:
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(256),
age INT
我们可以写一个Mapper文件,定义如下:
<mapper namespace="com.example.mapper.UserMapper">
<select id="selectUserByName" parameterType="String" resultType="User">
SELECT * FROM user WHERE name = #{name}
</select>
</mapper>
然后通过SqlSession来执行SQL查询语句:
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = mapper.selectUserByName("test");
示例二:插入语句
我们可以写一个Mapper文件,定义如下:
<mapper namespace="com.example.mapper.UserMapper">
<insert id="insertUser" parameterType="User">
INSERT INTO user (name, age) VALUES (#{name}, #{age})
</insert>
</mapper>
然后通过SqlSession来执行SQL插入语句:
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = new User();
user.setName("test");
user.setAge(18);
mapper.insertUser(user);
sqlSession.commit();
以上就是Mybatis的创建方法和全局配置教程的详细讲解和两个示例。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Mybatis 创建方法、全局配置教程详解 - Python技术站