Java Mybatis框架由浅入深全解析上篇
介绍
Java Mybatis框架是一个基于Java语言的数据映射框架,它是一种半自动化的ORM框架,通过XML配置文件或注解的方式将Java对象与数据库进行映射。
Mybatis的基本结构
Mybatis的基本结构包括四个部分:
- Configuration(配置类):读取mybatis配置文件中的信息,生成全局唯一的SQLSessionFactory对象。
- SQLSessionFactory:是自定义的一个工厂对象,用于生产SqlSession对象。
- SqlSession:是Mybatis中最重要的对象,用于进行数据持久化操作。
- Mapper:是映射接口,包含了访问数据库的SQL映射方法。
Mybatis的使用
1. 搭建Mybatis环境
- 引入Mybatis的jar包
- 编写Mybatis配置文件mybatis.xml
- 编写数据库配置文件db.properties
2. 编写Mapper映射接口
- 定义Mapper接口
- 定义Mapper接口中的SQL映射方法并配置SQL语句
3. 编写Mapper映射文件
- 编写Mapper映射文件,并配置数据库表与Java对象的映射关系
- 编写SQL语句
4. 在代码中通过SqlSessionFactory和SqlSession对象进行数据持久化操作
- 通过SqlSessionFactoryBuilder类的build()方法创建SqlSessionFactory对象
- 通过SqlSessionFactory对象创建SqlSession对象
- 调用SqlSession对象的方法进行数据持久化操作
示例一
编写Mapper接口
public interface UserMapper {
// 获取用户信息
User getUserById(int id);
// 添加用户
void addUser(User user);
// 更新用户信息
void updateUser(User user);
// 删除用户
void deleteUser(int id);
}
编写Mapper映射文件
<mapper namespace="UserMapper">
<select id="getUserById" resultType="User">
select * from user where id=#{id}
</select>
<insert id="addUser" parameterType="User">
insert into user(username,password,birthday,sex,address) values(#{username},#{password},#{birthday},#{sex},#{address})
</insert>
<update id="updateUser" parameterType="User">
update user set username=#{username},password=#{password},birthday=#{birthday},sex=#{sex},address=#{address} where id=#{id}
</update>
<delete id="deleteUser" parameterType="int">
delete from user where id=#{id}
</delete>
</mapper>
在代码中进行数据持久化操作
// 通过SqlSessionFactoryBuilder类的build()方法创建SqlSessionFactory对象
InputStream inputStream = Resources.getResourceAsStream("mybatis.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 通过SqlSessionFactory对象创建SqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
// 获取Mapper代理对象
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
// 添加用户
User user = new User("Tom", "123456", new Date(), 1, "北京");
userMapper.addUser(user);
// 获取用户信息
User getUser = userMapper.getUserById(user.getId());
System.out.println(getUser);
// 更新用户信息
getUser.setUsername("Jack");
userMapper.updateUser(getUser);
// 删除用户
userMapper.deleteUser(getUser.getId());
// 提交事务
sqlSession.commit();
// 关闭SqlSession对象
sqlSession.close();
示例二
编写Mapper接口
public interface OrderMapper {
// 根据订单ID查询订单
Order getOrderById(int id);
// 查询订单及订单所属用户信息
Order queryOrderUserById(int id);
// 查询订单及订单所属用户信息(关联查询方式二)
Order queryOrderUserById2(int id);
}
编写Mapper映射文件
<mapper namespace="OrderMapper">
<select id="getOrderById" resultMap="orderResultMap">
select * from orders where id=#{id}
</select>
<resultMap id="orderResultMap" type="Order">
<id property="id" column="id"/>
<result property="orderTime" column="ordertime"/>
<result property="totalPrice" column="totalprice"/>
<result property="status" column="status"/>
<association property="user" column="user_id" select="UserMapper.getUserById"/>
</resultMap>
<select id="queryOrderUserById" resultMap="orderResultMap">
select o.id,ordertime,totalprice,status,u.username,u.sex,u.address
from orders o left join user u on o.user_id=u.id
where o.id=#{id}
</select>
<select id="queryOrderUserById2" resultMap="orderResultMap">
select o.id,ordertime,totalprice,status,u.username,u.sex,u.address
from orders o,user u
where o.user_id=u.id and o.id=#{id}
</select>
</mapper>
在代码中进行数据持久化操作
// 通过SqlSessionFactoryBuilder类的build()方法创建SqlSessionFactory对象
InputStream inputStream = Resources.getResourceAsStream("mybatis.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 通过SqlSessionFactory对象创建SqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
// 获取Mapper代理对象
OrderMapper orderMapper = sqlSession.getMapper(OrderMapper.class);
// 根据订单ID查询订单
Order order = orderMapper.getOrderById(3);
System.out.println(order);
// 查询订单及订单所属用户信息(关联查询方式一)
Order order2 = orderMapper.queryOrderUserById(3);
System.out.println(order2);
// 查询订单及订单所属用户信息(关联查询方式二)
Order order3 = orderMapper.queryOrderUserById2(3);
System.out.println(order3);
// 关闭SqlSession对象
sqlSession.close();
以上是关于《Java Mybatis框架由浅入深全解析上篇》的完整攻略,示例中涉及到了编写Mapper映射接口、Mapper映射文件以及在代码中进行数据持久化操作等过程。希望可以帮助到您。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java Mybatis框架由浅入深全解析上篇 - Python技术站