1.导入相关jar包
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
2.在resource文件下编写MyBatis核心配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<!--设置mybatis输出日志-->
<setting name="logImpl" value="STDOUT_LOGGING"/>
<!--开启二级缓存-->
<setting name="cacheEnabled" value="true"/>
</settings>
<!--设置别名(三种方法)-->
<typeAliases>
<typeAlias type="实体类的全限定类名" alias="别名" />
<!--或者-->
<!--name:实体类所在的包名-->
<package name="pojo"/>
<!--或者在实体类的类上加注解@Aliases("别名")-->
</typeAliases>
<!--导入properties文件-->
<properties resource="db.properties"/>
<!--environments里可以定义多个environment,但每个id必须保持唯一-->
<!--default属性指定要用的environment的id-->
<environments default="development">
<environment id="development">
<!--事务管理器-->
<!--<transactionManager type="[ JDBC | MANAGED ]"/>-->
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<!--sql映射文件的位置-->
<mappers>
<!--使用相对于类路径的资源引用-->
<mapper resource="dao/Mapper.xml"/>
<!--
使用映射器接口实现类的完全限定类名
需要配置文件名称和接口名称一致,并且位于同一目录下
-->
<mapper class="dao.Mapper"/>
<!--
将包内的映射器接口实现全部注册为映射器
但是需要配置文件名称和接口名称一致,并且位于同一目录下
-->
<!--name:mapper所在的包名-->
<package name="dao"/>
</mappers>
</configuration>
Properties优化
-
在资源目录下新建一个db.properties
driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=utf8 username=root password=123456
-
将文件导入properties 配置文件
<!--导入properties文件-->
<properties resource="db.properties"/>
<!--在environments标签上-->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
3.编写MyBatis工具类
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
//获取SqlSession连接
public static SqlSession getSession(){
return sqlSessionFactory.openSession();
}
}
4.创建实体类
public class User {
private int id;
private String name;
private String pwd;
//构造,有参,无参
//set/get
//toString()
}
5.编写Mapper接口类
public interface UserMapper {
//查询用户
List<User> selectUser();
//添加一个用户
int addUser(User user);
//修改一个用户
int updateUser(User user);
//根据id删除用户
int deleteUser(int id);
}
6.编写Mapper.xml配置文件
-
namespace
其值为:对应的Mapper接口类的全限定类名
-
id属性
对应Mapper接口类的方法名
-
resultType
返回值的类型
-
若是基本数据类型,则可以省略
-
若是对象类型,
若有别名,可以只写类名
若无别名,则写该类的全限定类名
- 若是容器类,则写范型的类型
-
-
parameterType
传入参数的类型
同上
-
resultMap
用于处理对象属性名和数据库字段名不匹配问题
<?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="dao.UserMapper">
<select id="selectUser" resultType="pojo.User">
select * from user
</select>
<insert id="addUser" parameterType="pojo.User">
insert into user (id,name,pwd) values (#{id},#{name},#{pwd})
</insert>
<update id="updateUser" parameterType="pojo.User">
update user set name=#{name},pwd=#{pwd} where id = #{id}
</update>
<delete id="deleteUser" parameterType="int">
delete from user where id = #{id}
</delete>
</mapper>
7.编写测试类
public class MyTest {
@Test
public void selectUser() {
SqlSession session = MybatisUtils.getSession();
//方法一:
//List<User> users =session.selectList("dao.UserMapper.selectUser");
//方法二:
UserMapper mapper = session.getMapper(UserMapper.class);
List<User> users = mapper.selectUser();
for (User user: users){
System.out.println(user);
}
session.close();
}
}
可能出现问题说明:Maven静态资源过滤问题
Mapper.xml在java目录下,运行后过滤不到target\classes文件目录下
在pom文件下编辑
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>