• Java -- MyBatis学习笔记4、简单CURD


    1、使用MyBatis实现基本CURD

    采用传统的Dao层开发方式、通过mybatis实现对数据库表基本功能、查询所有、查询单个、新增、删除、修改

    • 在Dao层创建接口、有如下几个方法:
    public interface UserInfoDao
    {
        public List<UserInfo> selectAll();
    
        public UserInfo selectUser(int id);
    
        public int insert(UserInfo userInfo);
    
        public int update(UserInfo userInfo);
    
        public int delete(int id);
    }
    
    • 实现接口、代码如下:
    public class UserInfoDaoImpl implements UserInfoDao
    {
        private SqlSession sqlSession;
    
        /**
         * 通过构造函数、注入sqlSession对象
         * @param sqlSession 调用者传入的sqlSession对象
         */
        public UserInfoDaoImpl(SqlSession sqlSession)
        {
            this.sqlSession = sqlSession;
        }
    
        /**
         * 查询所有
         * @return 结果集合
         */
        @Override
        public List<UserInfo> selectAll()
        {
            return this.sqlSession.selectList("com.rg.dao.UserInfoDao.selectAll");
        }
    
        /**
         * 查询单个
         * @param id 条件id
         * @return 单个对象
         */
        @Override
        public UserInfo selectUser(int id)
        {
            return this.sqlSession.selectOne("com.rg.dao.UserInfoDao.selectUser", id);
        }
    
        /**
         * 新增数据
         * @param userInfo 对象
         * @return 受影响行数
         */
        @Override
        public int insert(UserInfo userInfo)
        {
            return this.sqlSession.insert("com.rg.dao.UserInfoDao.insert", userInfo);
        }
    
        /**
         * 修改数据
         * @param userInfo 对象
         * @return 受影响行数
         */
        @Override
        public int update(UserInfo userInfo)
        {
            return this.sqlSession.update("com.rg.dao.UserInfoDao.update", userInfo);
        }
    
        /**
         * 删除数据
         * @param id 条件id
         * @return 受影响行数
         */
        @Override
        public int delete(int id)
        {
            return this.sqlSession.delete("com.rg.dao.UserInfoDao.delete", id);
        }
    }
    
    • 在Dao层创建mapper映射文件、如下:
    <mapper namespace="com.rg.dao.UserInfoDao">
        <!--
           id:推荐使用接口中方法名称
           resultType:sql语句返回值类型、这里虽然最后结果是集合、但是集合中存的是UserInfo
        -->
        <select id="selectAll" resultType="com.rg.entity.UserInfo">
            select * from UserInfo
        </select>
        <select id="selectUser" resultType="com.rg.entity.UserInfo">
            select * from UserInfo where id = #{id}
        </select>
        <insert id="insert" parameterType="com.rg.entity.UserInfo">
            insert into UserInfo(Name,Age) values(#{Name},#{Age})
        </insert>
        <update id="update" parameterType="com.rg.entity.UserInfo">
            update UserInfo set Name=#{Name},Age=#{Age} where id = #{id}
        </update>
        <delete id="delete" parameterType="int">
            delete from UserInfo where id=#{id}
        </delete>
    </mapper>
    
    • 在测试类中测试、如下:
    private UserInfoDao userInfoDao;
        private SqlSession sqlSession;
        @Before
        public void init() throws IOException
        {
            //mybatis主配置文件
            String config = "mybatis.xml";
            //读取配置文件
            InputStream is = Resources.getResourceAsStream(config);
            //创建SqlSessionFactory对象,目的是获取SqlSession
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
            //获取SqlSession对象,SqlSession能执行sql语句
            this.sqlSession = sqlSessionFactory.openSession();
            this.userInfoDao = new UserInfoDaoImpl(sqlSession);
        }
        @After
        public void finish()
        {
            //关闭selectList,释放资源
            this.sqlSession.close();
        }
        @Test
        public void selectAll()
        {
            //执行SqlSession的selectList()
            List<UserInfo> userList = this.userInfoDao.selectAll();
            //循环输出集合中的结果
            userList.forEach(x -> System.out.println(x));
        }
        @Test
        public void selectUser()
        {
            UserInfo userInfo = this.userInfoDao.selectUser(2);
            System.out.println(userInfo);
        }
    
        @Test
        public void insert()
        {
            UserInfo userInfo = new UserInfo();
            userInfo.setName("张飞");
            userInfo.setAge(16);
            int result = this.userInfoDao.insert(userInfo);
            sqlSession.commit();
            System.out.println(result);
        }
    
        @Test
        public void update()
        {
            UserInfo userInfo = new UserInfo();
            userInfo.setId(2);
            userInfo.setName("李白");
            userInfo.setAge(20);
            int result = this.userInfoDao.update(userInfo);
            sqlSession.commit();
            System.out.println(result);
        }
    
        @Test
        public void delete()
        {
            int result = this.userInfoDao.delete(2);
            sqlSession.commit();
            System.out.println(result);
        }
    

    这样、通过MyBatis就实现了对数据库表的简单CURD。

  • 相关阅读:
    android listview 的弹性滑动 简单demo 实现
    android轻松监听来电和去电
    android有效的获取图像和视频
    android项目源码异步加载远程图片的小例子
    Android游戏开发系统控件CheckBox
    Android Gallery3D效果 教程 案例 代码
    Android 桌面组件【app widget】 进阶项目心情记录器
    基于ListView和CheckBox实现多选和全选记录的功能
    Android上传文件到服务器中的简单实例
    最小边覆盖(最小路径覆盖)(路径可相交)——pku2594
  • 原文地址:https://www.cnblogs.com/dcy521/p/14745415.html
Copyright © 2020-2023  润新知