在我们ssh的框架开发中一般会有dao层的分层,在这儿我们也开发出一个用于比较。
在目录机构框架中加入dao层
cn.bj.mybatis
|---model
|---dao
|---impl
类分别为IUserDao.java、UserDaoImpl.java
IUserDao.java
package cn.bj.mybatis.dao;
import cn.bj.mybatis.model.User;
public interface IUserDao {
//根据用户ID查询用户信息
public User selectUser(int id);
//增加用户信息
public void addUser(User user);
//删除用户信息
public void deleteUser(int id);
//修改用户信息
public void updateUser(User user);
}
UserDaoImpl.java
package cn.bj.mybatis.dao.impl;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import cn.bj.mybatis.dao.IUserDao;
import cn.bj.mybatis.model.User;
public class UserDaoImpl implements IUserDao{
//需要向dao实现类中注入sqlSessionFactory
private SqlSessionFactory sqlSessionFactory;
//在这里用构造方法注入
public UserDaoImpl(SqlSessionFactory sqlSessionFactory){
this.sqlSessionFactory = sqlSessionFactory;
}
@Override
public User selectUser(int id) {
SqlSession session = sqlSessionFactory.openSession();
User user = session.selectOne("cn.bj.mybatis.models.UserMapper.selectUser", id);
session.close();
return user;
}
@Override
public void addUser(User user) {
SqlSession session = sqlSessionFactory.openSession();
session.insert("cn.bj.mybatis.models.UserMapper.addUser", user);
session.commit();
session.close();
}
@Override
public void deleteUser(int id) {
SqlSession session = sqlSessionFactory.openSession();
session.delete("cn.bj.mybatis.models.UserMapper.deleteUser", id);
session.commit();
session.close();
}
@Override
public void updateUser(User user) {
SqlSession session = sqlSessionFactory.openSession();
session.update("cn.bj.mybatis.models.UserMapper.updateUser", user);
session.commit();
session.close();
}
}
User.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="cn.bj.mybatis.models.UserMapper">
-->
<mapper namespace="cn.bj.mybatis.models.UserMapper">
<select id="getUserOrders" parameterType="int" resultMap="resultUserOrderList">
select t_user.id,t_user.username,t_user.age,t_order.id o_id,t_order.orderName from t_user,t_order where t_user.id=t_order.userid and t_user.id=#{id}
</select>
<resultMap type="Order" id="resultUserOrderList">
<id property="id" column="o_id"/>
<result property="orderName" column="orderName"/>
<association property="user" javaType="User">
<id property="id" column="id" />
<result property="name" column="name" />
<result property="age" column="age" />
</association>
</resultMap>
<!-- 查询数据 -->
<select id="selectUser" resultType="User">
select * from t_user where id = #{id}
</select>
<!-- 增加数据 -->
<insert id="addUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">
insert into t_user(username,age) values(#{username},#{age})
</insert>
<!-- 修改数据 -->
<update id="updateUser" parameterType="User">
update t_user set username=#{username},age=#{age} where id=#{id}
</update>
<!-- 删除数据 -->
<delete id="deleteUser" parameterType="int">
delete from t_user where id = #{id}
</delete>
</mapper>
Mybatistest.java
package cn.bj.mybatis.test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
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 cn.bj.mybatis.dao.IUserDao;
import cn.bj.mybatis.dao.impl.UserDaoImpl;
import cn.bj.mybatis.model.IUserOperation;
import cn.bj.mybatis.model.Order;
import cn.bj.mybatis.model.User;
public class MybatisTest {
public static void main(String[] args){
SqlSessionFactory sqlSessionFactory = null;
SqlSession session = null;
String resource = "Configuration.xml";
InputStream inputStream;
try {
inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
IUserDao userDao = new UserDaoImpl(sqlSessionFactory);
//User user = userDao.selectUser(2);查询
//
/*修改
User user = userDao.selectUser(2);
user.setAge(90);
userDao.updateUser(user);
*/
/**添加
User user = new User();
user.setUsername("kkddkdk");
user.setAge(20);
userDao.addUser(user);
*/
/**
* 删除
userDao.deleteUser(2);
*/
} catch (IOException e) {
e.printStackTrace();
}finally{
if(session != null){
session.close();
}
}
}
}
在测试类Mybatistest.java中放开注释依次测试即可。