Mybatis手动模式CRUD

2018-07-27  本文已影响4人  神豪VS勇士赢

一、先准备mybatis-config.xml 这个基础配置文件 配置文件可以使用上一文章中使用的配置文件,不用任何修改。
二 、准备 Mapper.xml文件
分别加入增删改查的代码 ,当然了 我们观察下面的代码可以发现 我们在修改和增加 传参数的时候 类型可写对象类型 当然可 也可以使用 map 类型对应数据库里面的字段 都可以完成修改以及 增加的操作。

 <select id="findUserByid" resultType="com.zyh.pojo.User" parameterType="java.lang.Long">
    select * from user where id = #{id}
</select>
<insert id="insertOneUserParamUser"  parameterType="com.zyh.pojo.User">
    INSERT
    INTO  user(username,password)
    VALUES (#{username},#{password})

</insert>
<insert id="insertOneUserParamMap" parameterType="java.util.Map">
INSERT
INTO user(username,password)
VALUES (#{username},#{password})
</insert>
<delete id="deleteOneUserParamId" parameterType="java.lang.Long">
DELETE
FROM user
WHERE id=#{id}
</delete>
<update id="updateOneUserParamUser" parameterType="com.zyh.pojo.User">
UPDATE user
SET username =#{username},password=#{password}
WHERE id=#{id}
</update>
<update id="updateOneUserParamMap" parameterType="java.util.Map">
UPDATE user
SET username=#{username},password=#{password}
WHERE id=#{id}
</update>

我们现在可以观察一下 上一文章中的 入门程序 里面 有几行代码是冗余的
并且里面涉及到 sqlSessionFactory 所以我们可以使用单例涉及模式来处理上面的几行代码 提高性能。


image.png

首先 :我们可以先来复习一下单例模式:
大体上 ,单例可以分为 懒汉式和恶汉式。

第一种:饿汉模式
public class SingleTon {
private SingleTon(){
}
//实例化放在静态代码块里可提高程序的执行效率,但也可能更占用空间
private final static SingleTon instance = new SingleTon();
public static SingleTon getInstance(){
return instance;
}
}
第二种:懒汉模式
public class SingleTon {
private SingleTon(){}
private static instance = null;//new SingleTon();
public static synchronized SingleTon getInstance(){
if(instance == null)
instance = new SingleTon();
return instance;
}
}
我们可以使用 静态代码块以及 同步锁来优化上面的代码 比如懒汉式可以加入同步锁解决线程不安全情况 ,以及分别加入静态代码块提高执行效率 ,当然可能会导致内存占用率会很大。
/**

@Override
public void insertOneUserParamUser(User user) {
SqlSession sqlSession = SqlSessionFactoryUtilSingleL.getSqlSession();
sqlSession.insert("com.zyh.insertOneUserParamUser",user);
sqlSession.commit();
}

@Override
public void insertOneUserParamMap(Map map) {
    SqlSession sqlSession = SqlSessionFactoryUtilSingleL.getSqlSession();
    sqlSession.insert("com.zyh.insertOneUserParamMap",map);
    sqlSession.commit();
}

@Override
public void deleteOneUserParamId(Long id) {
    SqlSession sqlSession = SqlSessionFactoryUtilSingleL.getSqlSession();
    sqlSession.insert("com.zyh.deleteOneUserParamId",id);
    sqlSession.commit();
}

@Override
public void updateOneUserParamUser(User user) {
    SqlSession sqlSession = SqlSessionFactoryUtilSingleE.getSqlSession();
    sqlSession.insert("com.zyh.updateOneUserParamUser",user);
    sqlSession.commit();
}

@Override
public void updateOneUserParamMap(Map map) {
    SqlSession sqlSession = SqlSessionFactoryUtilSingleE.getSqlSession();
    sqlSession.insert("com.zyh.updateOneUserParamMap",map);
    sqlSession.commit();
}

DAO开发:
增删改需要提交事务sqlSession.commit();//在操作数据之后提交事务,查询不需要

从上面的代码发现 我们持久化层还是写了很多代码 ,比如 pojo 比如复杂的Mapper 等等 ....
下一篇文章我们将会 讲述一下 如何使用插件自动生成Mapper、dao、 pojo
我们只需要创建数据库表即可完成自动生成 是不是很期待呢?

上一篇下一篇

猜你喜欢

热点阅读