Mybatis入门程序一

Mybatis入门程序一

Mybatis的dao层开发结构有两种,一种是原始dao层方式,一种是mapper代理方式。两种方式分别给出如下例子:

目录结构:


配置文件

SqlmapperConfig.xml

userMapper.xml

<mapper namespace="test">

         <!-- 根据id查询用户信息 -->

         <!--

                   id:唯一标识一个statement

                   #{}:表示一个占位符,如果#{}中传入简单类型的参数,#{}中的名称随意

                   parameterType:输入参数的类型,通过#{}接收parameterType输入的参数

                   resultType:输出结果类型,不管返回是多条还是单条,指定单条记录映射的pojo类型

          -->

<!-- <select id="findUserById"parameterType="int"resultType="cn.itcast.mybatis.po.User">

                   SELECT * FROM USER WHERE id=#{id}

        

         </select> -->

        

         <!-- 根据用户名查询该用户是否注册过-->

         <select id="select_username"parameterType="String"  resultType="Integer">

                   select count(1) from registerwhere username= #{username}

         </select>

        

         <!-- 输入参数的类型要一样 -->

         <select id="select_article"parameterType="String"  resultType="com.zhangyike.bean.ArticleBean">

                   select

                            article.articleid,article.articlecontent,article.articlename,article.keyworlds,

                            visit.hit,

                            praise.praisecount

                   from article,visit,praise

                   where article.articleid =visit.articleid and article.articleid = praise.articleid and article.articleid= #{articleid}

         </select>

        

        

         <!-- 更改点赞量 -->

         <update id="update_praisecount"parameterType ="com.zhangyike.bean.ArticleBean">

                   UPDATE praise SET praisecount= praisecount+ #{praisecount} WHERE articleid = #{articleid}

         </update>

        

         <delete id="deleteUser"parameterType="String">

          delete from register where username=#{id}

         </delete>

        

         <insert id="insert_user"parameterType="com.zhangyike.bean.User">

                   INSERT INTO register(username,password,telephone)VALUES (#{username}, #{password}, #{telephone})

         </insert>

</mapper>

 

工具类:

public class SessionUtils {

         private staticSqlSessionFactory sqlSessionFactory;

        

         static{

                   try {

                            InputStreamstream = Resources.getResourceAsStream("sqlMapperConfig.xml");

                            sqlSessionFactory = new SqlSessionFactoryBuilder().build(stream);

                   }catch (IOException e) {

                            System.out.println("加载配置文件失败:" +e.getMessage());

                   }

         }

        

         public staticSqlSession getSqlSession(){

                   return sqlSessionFactory.openSession();

         }

        

         public staticvoid closeSqlSession(SqlSessionsqlSession){

                   sqlSession.close();

         }

}

 

原始dao层使用方式:

public static void main(String[] args){

                   SqlSessionsession = SessionUtils.getSqlSession();

                   ArticleBeanone = null;

                   try{

                            one= (ArticleBean)session.selectOne("select_article","1");

                   }catch(Exception e){

                            e.printStackTrace();

                   }finally{

                            session.close();

                   }

                   System.out.println(one);

         }

Mapper代理方式:

写一个mapper接口类,mapper的namespace就是接口的全类名,接口中的抽象方法就是userMapper.xml的id就是接口中的抽象方法名。

 

public static void main(String[] args) {

                   SqlSessionsqlsession = SessionUtils.getSqlSession();

                   UserMapperuser = sqlsession.getMapper(UserMapper.class);

                  

                   ArticleBeanselect_article = user.select_article(1+"");

                   sqlsession.commit();

                   sqlsession.close();

                  

                   System.out.println(select_article);

         }

总结:

原始dao的方式用sqlsession的方法,传递一个mapper中的id,以及参数就可以操作数据库,而mapper代理方式根据sqlsession的getMapper()的方法,得到mapper接口对象,从而调用接口中的方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值