zoukankan      html  css  js  c++  java
  • MyBatis基础-CRUD

    一、mybatis  环境搭建步骤 

    第一步:创建 maven 工程
    第二步:导入坐标
    第三步:编写必要代码(实体类和持久层接口)
    第四步:编写 SqlMapConfig.xml
    第五步:编写映射配置文件
    第六步:编写测试类

    二、编写sqlMapConfig.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE configuration
            PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <!-- 主配置文件 -->
    <configuration>
        <!-- 配置环境 -->
        <environments default="mysql">
            <environment id="mysql">
                <transactionManager type="JDBC"></transactionManager>
                <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql://localhost:3306/eesy_mybatis"/>
                    <property name="username" value="root"/>
                    <property name="password" value="123456"/>
                </dataSource>
            </environment>
        </environments>
    
        <!-- 指定映射配置文件的位置 -->
        <mappers>
            <mapper resource="com/jzq/dao/UserDao.xml"/>
        </mappers>
    </configuration>

    三、 在持久层(DAO)接口中添加CRUD方法 

    package com.jzq.dao;
    
    import com.jzq.domain.User;
    
    import java.util.List;
    
    /**
     * @author jzq
     * @create 2019-08-24 下午 1:39
     */
    public interface UserDao {
        List<User> findAll();
    
        /**
         * 保存方法
         * @param user
         */
        void saveUser(User user);
    
        /**
         * 修改方法
         * @param user
         */
        void updateUser(User user);
    
        /**
         * 删除方法
         * @param userId
         */
        void deleteUser(Integer userId);
    
        /**
         * 寻找指定id用户
         * @param id
         * @return
         */
        User findUser(Integer id);
        /**
         * 模糊查询
         */
        List<User> findByLikeName(String username);
        /**
         * 查询总用户数
         */
        int findTotal();
    }

    四、 在用户的映射配置文件(Mapper)中配置

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.jzq.dao.UserDao">
        <select id="findAll" resultType="com.jzq.domain.User">
            SELECT * from user
        </select>
        <!-- 保存用户 -->
        <insert id="saveUser" parameterType="com.jzq.domain.User">
            <!-- 配置插入操作后,获取插入数据id -->
            <selectKey keyProperty="id" keyColumn="id" resultType="int" order="AFTER">
                SELECT last_insert_id();
            </selectKey>
            INSERT INTO user(username,birthday,sex,address)VALUE (#{username},#{birthday},#{sex},#{address})
        </insert>
        <!-- 更新用户 -->
        <update id="updateUser" parameterType="com.jzq.domain.User">
            UPDATE user set username=#{username},sex=#{sex} WHERE id=#{id};
        </update>
        <!-- 删除用户 -->
        <delete id="deleteUser" parameterType="Integer">
            DELETE FROM user WHERE id = #{uId}
        </delete>
        <!-- 查询指定id用户 -->
        <select id="findUser" parameterType="Integer" resultType="com.jzq.domain.User">
            SELECT * from user WHERE id = #{uid}
        </select>
        <!-- 根据名称模糊查询 -->
        <select id="findByLikeName" parameterType="String" resultType="com.jzq.domain.User">
            SELECT * from user WHERE username like #{name}
        </select>
        <!-- 查询用户的总记录数 -->
        <select id="findTotal" resultType="int">
            SELECT COUNT(id) from user;
        </select>
    </mapper>

    五、测试类测试CRUD方法

    package com.jzq.test;
    
    
    import com.jzq.dao.UserDao;
    import com.jzq.domain.User;
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;
    
    import java.io.InputStream;
    import java.util.Date;
    import java.util.List;
    
    /**
     * @author jzq
     * @create 2019-08-24 下午 2:44
     * CRUD操作
     */
    public class MyBatisTest {
        private InputStream in;
        private SqlSession sqlSession;
        private SqlSessionFactory factory;
        private UserDao userDao;
    
        @Before//在测试方法执行前执行
        public void init() throws Exception {
            //读取配置文件,生成字节输入流
            in = Resources.getResourceAsStream("SqlMapConfig.xml");
            //获取sqlSessionFactory
            factory = new SqlSessionFactoryBuilder().build(in);
            //获取SQLSession对象
            sqlSession = factory.openSession();
            //获取dao的代理对象
            userDao = sqlSession.getMapper(UserDao.class);
        }
    
        @After//在测试方法执行后执行
        public void destroy() throws Exception {
            //释放资源
            sqlSession.commit();
            sqlSession.close();
            in.close();
        }
    
        /**
         * 测试查询方法
         *
         * @throws Exception
         */
        @Test
        public void testFindAll() throws Exception {
    
            //执行查询所有方法
            List<User> users = userDao.findAll();
            for (User user : users) {
                System.out.println(user);
            }
            //释放资源
    
            sqlSession.close();
            in.close();
        }
    
        
        /**
         * 测试保存操作
         */
        @Test
        public void testSave() throws Exception {
            User user = new User();
            user.setUsername("mybaitis_save");
            user.setBirthday(new Date());
            user.setSex("男");
            user.setAddress("北京市非台区");
            //执行保存方法
            userDao.saveUser(user);
            sqlSession.commit();
        }
    
        /**
         * 测试保存操作
         */
        @Test
        public void testFindInsertId() throws Exception {
            User user = new User();
            user.setUsername("mybaitis_last insert");
            user.setBirthday(new Date());
            user.setSex("女");
            user.setAddress("北京市台区");
            System.out.println("执行保存操作之前" + user);
            //执行保存方法
            userDao.saveUser(user);
            System.out.println("执行保存操作之后" + user);
        }
    
        /**
         * 测试更新操作
         */
        @Test
        public void testUpdate() throws Exception {
            User user = new User();
            user.setId(50);
            user.setUsername("mybaitis_update");
            user.setSex("女");
            //执行查询所有方法
            userDao.updateUser(user);
        }
    
        /**
         * 测试删除操作
         */
        @Test
        public void testDelete() throws Exception {
    
            userDao.deleteUser(48);
        }
    
        /**
         * 测试查找指定操作
         */
        @Test
        public void testFindOne() throws Exception {
    
            User user = userDao.findUser(50);
            System.out.println(user);
        }
    
        /**
         * 测试模糊查找操作
         */
        @Test
        public void testFindLikeName() throws Exception {
    
            List<User> users = userDao.findByLikeName("%小%");
            for (User user : users) {
                System.out.println(user);
            }
        }
        /**
         * 测试查询总用户数
         */
        @Test
        public void testFindTotal(){
            int count = userDao.findTotal();
            System.out.println(count);
        }
    }
  • 相关阅读:
    招聘、外包和求职;找人、找活和找工作的都来看看。
    这周我加星(6)
    走出行业暴利思维,开始为“软件”付钱!
    真相,道歉。
    这周我加星(8-11)
    独家:Havok 发布新的 AI 中间件
    一奖三年得,终获 CSDN MVB,与大家分享喜悦
    “解决”OpenCASCADE图形设备初始化问题
    如何在Debian上安装ATI官方驱动
    VC++/MFC学习笔记(六)
  • 原文地址:https://www.cnblogs.com/strong-FE/p/11422047.html
Copyright © 2011-2022 走看看