Mybatis使用有两种比较流行的使用方法,一种是xml配置文件,另外一种是注解开发。
一,xml配置文件
1,实体类编写
按照个人需求编写实体类,本人这里使用简单的User类举例。
package com.example.Enity;
import lombok.Data;
@Data
public class User {
private String username;
private String password;
}
2,编写Mapper接口
package com.example.Mapper;
import com.example.Enity.User;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface UserMapper {
// @Select("select * from user")
public List<User> queryAll();
public int add(User user);
}
这里仅做了一个查询全部与添加方法。
3,xml配置文件的编写(关键步骤)
<?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.example.Mapper.UserMapper">
<select id="queryAll" resultType="com.example.Enity.User">
select * from user
</select>
<insert id="add" parameterType="com.example.Enity.User">
insert into user values (#{username},#{password})
</insert>
</mapper>
看似复杂,其实里面有许多是比较固定的内容,大多数需要编写的是namespace对应的Mapper类和对应的sql语句。
4,编写yml配置文件
spring:
datasource:
url: jdbc:mysql://localhost:3306/****characterEncoding=utf8
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
username: *****
password: *****
logging:
config: classpath:./log.xml
mybatis:
mapper-locations: classpath:Mapper/*.xml
其中需要注意的关键是路径千万不要写错了。其中classpath表示是在target目标文件中的位置,一般加入了classpath则表示在Resource路径下。
二,注解开发
1,实体类编写与上面相似,就不再重复叙述。
2,编写Mapper类
package com.example.Mapper;
import com.example.Enity.User;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface UserMapper {
@Select("select * from user")
public List<User> queryAll();
@Insert("insert into user(username,password) values (#{username},#{password})")
public int add(User user);
}
这里就不再需要编写xml配置文件了,只需要在对应的方法上加上注释即可。
这里说一下#{}与${}的区别:
- #{}类使用PreparedStatement,有位符的作用,在构成sql语句时,使用?占位符代替缺失键的位置
- ${}则是使用Statement ,是直接拼接字符串上去的,容易发生注入
总结
以上就是关于Mybatis的两种主流的开发方式,两种各有利弊,对于一些简单的sql,使用注解可以比较方便,对于一些复杂且长的sql语句,使用xml会更加直观。