Mybatis怎么用
发布时间:2023-05-14 08:22:47
Mybatis是一个开源的持久层框架,它可以通过XML或注解的方式与数据库进行交互。它的主要优点是易于学习和使用,并且可以与各种关系型数据库协作,使得开发者可以专注于业务逻辑而不用关心过多的SQL语句。
1. 配置文件
Mybatis的配置文件名一般为mybatis-config.xml,其中包含了数据源和各种属性的配置。
(1)数据源配置
<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=""/>
</dataSource>
</environment>
</environments>
(2)属性配置
<typeAliases>
<typeAlias alias="User" type="com.example.domain.User"/>
</typeAliases>
<mappers>
<mapper resource="mappers/UserMapper.xml"/>
</mappers>
2. 映射文件
Mybatis将SQL语句与Java方法进行映射,这就需要通过映射文件来定义需要执行的SQL语句。
(1)命名空间
<mapper namespace="com.example.mapper.UserMapper">
(2)SQL语句
<select id="getUserById" parameterType="int" resultType="User">
SELECT * FROM user WHERE id = #{id}
</select>
3. Java API
Mybatis也支持通过Java API编写SQL语句和映射文件,但是相对于XML或注解,Java API的方式较为少见并且不太友好。
@Mapper
public interface UserMapper {
@Select("SELECT * FROM user WHERE id = #{id}")
User getUserById(int id);
}
4. 注解
Mybatis还支持通过注解的方式编写SQL语句和映射文件,这种方式的操作比XML更为简洁。
(1)使用@MapperScan
@MapperScan("com.example.mapper")
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
(2)使用@Mapper
@Mapper
public interface UserMapper {
@Select("SELECT * FROM user WHERE id = #{id}")
User getUserById(int id);
@Insert("INSERT INTO user (name, age) VALUES (#{name}, #{age})")
int insertUser(User user);
}
(3)使用@Param
@Mapper
public interface UserMapper {
@Select("SELECT * FROM user WHERE id = #{id}")
User getUserById(@Param("id") int id);
}
5. 插件
Mybatis的插件是在执行SQL语句之前或之后对SQL进行拦截,通过拦截器可以很方便地实现自定义的功能和扩展。
@Intercepts({@Signature(type = StatementHandler.class, method = "prepare", args = {Connection.class, Integer.class})})
public class MyPlugin implements Interceptor {
@Override
public Object intercept(Invocation invocation) throws Throwable {
System.out.println("插件拦截到了方法!");
Object result = invocation.proceed();
return result;
}
@Override
public Object plugin(Object target) {
return Plugin.wrap(target, this);
}
@Override
public void setProperties(Properties properties) {
}
}
6. 总结
Mybatis是一款功能强大、使用简单的持久化框架,支持多种方式和灵活的插件机制,如果掌握好了Mybatis已经可以完全胜任一般的数据库操作。当然,随着Spring Boot等框架的普及,Mybatis和其他框架的整合也是非常的简单方便的。
