Mybatis的使用
1.初始化SqlSessionFactory对象
SqlSessionFactory对象需要从一个核心配置文件中构建,因此我们创建SqlSessionFactory对象之前需要先配置一个Mybatis核心配置文件
1新建一个普通java工程
右键新建一个源文件夹 resources
新建源文件夹中新建一个xml文件命名为Mybatis-config.xml
把下面代码复制在xml文件中(需要改一些配置)
<?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>
<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/work524?useUnicode=true&characterEncoding=utf-8"/><!--修改1 mysql work524库名 -->
<property name="username" value="root"/><!--修改2mysql账号 -->
<property name="password" value="root"/><!--修改3mysql密码 -->
</dataSource>
</environment>
</environments>
<mappers>
<!-- 将通过XML方式配置的mapper引入进来 -->
<mapper resource="com/mybatis/mapper/StudentMapper.xml"/><!--修改4 mapper路径(包名)-->
<!--<package name="com.mybatis.mapper"/>--><!--修改4 mapper路径这样写也可以在这个路径下的都可以不用一一配置了-->
</mappers>
</configuration>
2.创建实体类和DAO层的接口(在Mybatis中叫Mapper)
新建包bean和mapper并创建实体类和Dao层接口
// 实体类
public class User {
private String username;
private String password;
private Integer id;
private String nickname;
// setters and getters...
}
// DAO层接口
public interface IUserMapper {
public List<User> queryAllUser();
public void insertUser(User user);
}
3.编写Mapper对象的xml配置文XML格式的Mapper配置文件类似于接口的实现类,它指定了具体要执行的SQL语句,以及结果集如何映射。
<?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">
<!-- namespace属性对应dao接口类的全名 -->
<mapper namespace="com.mybatis.mapper.UserMapper">
<!-- select、insert的id属性对应接口中的方法名 -->
<select id="queryAllUser" resultType="com.mybatis.bean.user">
select * from user
</select>
<insert id="insertUser">
insert into user (username,nick_name,email)
values (#{username},#{nickName},#{email})
</insert>
</mapper>
4.main方法
public static void main(String[] args) throws Exception {
// 1. 初始化mybatis配置
String resource = "Mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
// 2. 构建SqlSessionFactory对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 3. 获取SqlSession对象,默认事务不自动提交
SqlSession session = sqlSessionFactory.openSession();
//上面不用改动 下面 .class要根据你的情况修改
// 4. 获取Mapper
UserMapper mapper = session.getMapper(UserMapper.class);
// 5. 查询所有用户
List<User> users = mapper.queryAllUser();
System.out.println(users.size());
}
5.完成了
深入了解Mybatis
SqlSessionFactory
一个SqlSessionFactory只能连接一个数据库实例,如果需要连接多个数据库,需要构建多个SqlSessionFactory对象。
SqlSession
一个SqlSession对象代表一次到数据的会话,该对象有一下功能:
* 获取Mapper实现类
* 管理事务操作
Mapper
* Mapper接口类
定义了增删盖查的方法。注意,必须是接口类型,而且方法只需要定义就可以了。
* Mapper配置文件
Mapper配置文件中就是负责实现接口中的方法,它定义了具体要执行什么SQL语句,如何映射结果集。
* 配置文件中select、delete、update、insert标签的id必须是对应接口中的方法名。
* mapper文件的namespace属性需要对应Mapper接口的完全类型限定名。