zoukankan      html  css  js  c++  java
  • MyBatis的Dao开发模式

    MyBatis的Dao开发模式,先来一个例子

    1.User.java 实体类以及

    SqlMapConfig.xml配置文件

    ,见上一篇文章

    2.UserDao.java接口

     1 package com.test.dao;
     2 
     3 import com.test.entity.User;
     4 
     5 /**
     6  * 
     7  * @author Mr
     8  * dao模式1  例子
     9  */
    10 public interface UserDao {
    11     //根据id查找用户
    12     public User findUserById(int id);
    13     //添加数据到数据库
    14     public void insertUser(User user);
    15     //删除一条数据  根据id删除
    16     public void deleteUser(int id);
    17 }

    3.UserDaoImpl.java接口的实现类

     1 package com.test.dao.impl;
     2 
     3 import org.apache.ibatis.session.SqlSession;
     4 import org.apache.ibatis.session.SqlSessionFactory;
     5 
     6 import com.test.dao.UserDao;
     7 import com.test.entity.User;
     8 /**
     9  * 
    10  * @author Mr
    11  * 接口的实现类
    12  */
    13 public class UserDaoImpl implements UserDao{
    14     //工厂私有化
    15     private SqlSessionFactory sqlSessionFactory;
    16     //添加带参的构造方法
    17     public UserDaoImpl(SqlSessionFactory sqlSessionFactory) {
    18         this.sqlSessionFactory = sqlSessionFactory;
    19     }
    20 
    21     @Override
    22     public User findUserById(int id) {
    23         //获取数据库操作对象
    24         SqlSession sqlSession = sqlSessionFactory.openSession();
    25         //操作数据库  通过selectOne获取一条记录
    26         User user = sqlSession.selectOne("test.findUserById", id);
    27         //关闭连接  释放资源
    28         sqlSession.close();
    29         return user;
    30     }
    31 
    32     @Override
    33     public void insertUser(User user) {
    34         //获取数据库操作对象
    35         SqlSession sqlSession = sqlSessionFactory.openSession();
    36         //使用insert 添加数据
    37         sqlSession.insert("test.insertUser", user);
    38         //提交事务
    39         sqlSession.commit();
    40         //释放资源
    41         sqlSession.close();
    42         
    43     }
    44 
    45     @Override
    46     public void deleteUser(int id) {
    47         //获取数据库操作对象
    48         SqlSession sqlSession = sqlSessionFactory.openSession();
    49         //删除一条记录
    50         sqlSession.delete("test.delUserById", id);
    51         //提交事务
    52         sqlSession.commit();
    53         //释放资源
    54         sqlSession.close();
    55         
    56     }
    57 
    58 }

    4.User.xml配置文件

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE mapper
     3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
     5 <!-- namespace命名空间,为了对sql语句进行隔离,方便管理 ,mapper开发dao方式,使用namespace有特殊作用 -->
     6 <mapper namespace="test">
     7 <!-- 这里可以配置多个sql
     8     根据用户的id查询
     9     通过select进行查询
    10         select * from userss WHERE ID=#{id} 从plsql中测试完成复制过来
    11     parameterType 指定输入参数的类型 这里是int
    12     #{} 表示占位符
    13     #{id} 其中的id表示输入参数,参数的名称是id,如果输入参数是简单类型,可以使用#{}
    14     resultType 指定sql语句输出结果的类型,我们这里是Java对象
    15  -->
    16  <select id="findUserById" parameterType="int" resultType="com.test.entity.User">
    17      select * from userss WHERE ID=#{id}
    18  </select>
    19  
    20  <!-- 根据姓名模糊查询 -->
    21  <select id="findUserByName" parameterType="java.lang.String" resultType="com.test.entity.User">
    22      select * from userss WHERE username LIKE '%${value}%'
    23  </select>
    24  <!-- 添加用户 -->
    25  <insert id="insertUser" parameterType="com.test.entity.User">
    26      insert into userss values(seq_users_id.nextval,#{username},#{birthday},#{sex},#{address})
    27  </insert>
    28  <!-- 删除用户 -->
    29  <delete id="delUserById" parameterType="java.lang.Integer">
    30      DELETE userss WHERE ID=#{id}
    31  </delete>
    32  <!-- 更新 -->
    33  <update id="upUser" parameterType="com.test.entity.User">
    34      UPDATE userss SET username=#{username},address=#{address} WHERE ID=#{id}
    35  </update>
    36 
    37 </mapper>

    5.Test.java测试类

     1 package com.test.demo;
     2 
     3 import java.io.IOException;
     4 import java.io.InputStream;
     5 
     6 import org.apache.ibatis.io.Resources;
     7 import org.apache.ibatis.session.SqlSessionFactory;
     8 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
     9 
    10 import com.test.dao.UserDao;
    11 import com.test.dao.impl.UserDaoImpl;
    12 import com.test.entity.User;
    13 
    14 /**
    15  * 
    16  * @author Mr
    17  * 测试dao开发模式
    18  */
    19 public class Test2 {
    20 
    21     public static void main(String[] args) {
    22         try {
    23             //mybatis核心配置文件
    24             String resource = "SqlMapConfig.xml";
    25             //读取配置文件
    26             InputStream config = Resources.getResourceAsStream(resource);
    27             //获取sqlSessionFactory工厂
    28             SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(config);
    29             //创建对象工厂传递到impl类种
    30             UserDao udao = new UserDaoImpl(sqlSessionFactory);
    31             User user = udao.findUserById(31);
    32             System.out.println(user);
    33         } catch (IOException e) {
    34             // TODO Auto-generated catch block
    35             e.printStackTrace();
    36         }
    37 
    38     }
    39 
    40 }
  • 相关阅读:
    微信授权,重定向两次
    Newtonsoft.Json 序列化 排除指定字段或只序列化指定字段
    各大快递公司面单号准确性验证的正则表达式,来自淘宝开放平台,时间是20181206,
    微信小程序web-view(webview) 嵌套H5页面 唤起微信支付的实现方案
    HTTP请求头及其作用 转
    sql server 只读帐号设置能读取存储过程,view等内容。
    PhantomJS命令行选项
    XML实体注入漏洞
    XmlDocument 避免XXE
    Centos7.6安装redis
  • 原文地址:https://www.cnblogs.com/myhzb/p/7644576.html
Copyright © 2011-2022 走看看