每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先定制的 Configuration 的实例构建出 SqlSessionFactory 的实例
获取sqlSession实例:
InputStreaminputStream = Resources.getResourceAsStream("config/Configuration.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
return sqlSessionFactory.openSession();
一、不使用接口实现增删改查
Configuration.xml中映射器(mapper)映射User.xml,与其相关联
<mappers>
<mapper resource="sql/User.xml"/>
</mappers>
User.xml中映射sql语句:
<mapper namespace="User">
//增
<insert id = "insertUser">
insert user values(#{id},#{name},#{password})
/insert>
//写不写parameterType="bean.User"都可以
//删
<delete id = "deleteUser">
delete from user where id=#{id}
</delete>
//改
<update id="updateUser" parameterType = "bean.User">
update user set name=#{name},password=#{password} whereid=#{id}
</update>
//写不写parameterType="bean.User"都可以
//查
<select id="selectUser" resultType="bean.User">
select id,name,password from user
</select>
<select id="selectOne" resultType="bean.User">
selectid,name,password from user where id = #{adsa}
</select>
</mapper>
增删改必须提交(sqlSession.commit();)
如果形参是bean的话,占位符必须与bean中的属性一一对应,xml中不用特意声明形参是bean( parameterType ="bean.User")
如果(查找时)结果集是bean或bean的集合,则必须声明 resultType="bean.User"
java语句中具体实现
SqlSessionsession=dbUtil.getSession();
session.delete("User.deleteUser",id);
session.commit();
session.close();
二、映射器接口方法实现增删改查
1、通过xml文件实现
Configuration.xml中映射器(mapper)映射 接口UserMapper,与其相关联
<mappers>
<mapper class="mapper.UserMapper"/>
</mappers>
接口中:
public interface UserMapper{
void insert();
}
UserMapper.xml作为接口的配置文件,内容为:
<mapper namespace = "mapper.UserMapper">
<insert id="insert">
//具体内容同第一种
</insert>
</mapper>
具体实现
try(SqlSession sqlSession = new DBUtil().getSqlSession()){
//1
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
//2
userMapper.insertUser(id,name,password);
//3提交
sqlSession.commit();
}
2、通过注释实现
使用注解的方式写sql语句
public interface UserMapper{
@Insert("insert into user values(#{id}, #{name}, #{password})")
void insert(Useruser);
}