zoukankan      html  css  js  c++  java
  • 使用MyBatis对数据库中表实现CRUD操作(二)

    一、使用MyBatis对表实现CRUD操作

    1.定义sql映射

      userMapper.xml

    <?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,namespace的值为包名+sql映射文件名,这样就能保证namespace值唯一 -->
    <mapper namespace="codeRose.mapping.userMapper">
        <!-- 在select标签中编写查询的SQL语句, 设置select标签的id属性为getUser,id属性值必须是唯一的,不能够重复 使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型 
            resultType="me.gacl.domain.User"就表示将查询结果封装成一个User类的对象返回 User类就是users表所对应的实体类 -->
        <!-- 根据id查询得到一个user对象 -->
        <select id="getUser" parameterType="int" resultType="codeRose.dao.User">
            select * from users where id=#{id}
        </select>
        <!-- 创建用户(Create) -->
    

    <insert id="addUser" parameterType="codeRose.dao.User">

    insert into users(name,age) values(#{name},#{age}) </insert> <!-- 删除用户(delete) --> <delete id="deleteUser" parameterType="int"> delete from users where id=#{id} </delete> <!-- 修改用户 --> <update id="updateUser" parameterType="codeRose.dao.User"> update users set name=#{name},age=#{age} where id=#{id} </update> <!-- 查询全部用户 --> <select id="getAllUsers" resultType="codeRose.dao.User"> select * from users </select> </mapper>

     2.MyBatisUtil工具类代码如下:

    package codeRose.util;
    
    import java.io.InputStream;
    
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    
    public class MyBatisUtil {
        /**
         * 获取SqlSessionFactory
         * 返回SqlSessionFactory
         */
        public static SqlSessionFactory getSqlSessionFactory(){
            String resource ="conf.xml";
            //类加载器
            InputStream is=MyBatisUtil.class.getClassLoader().getResourceAsStream(resource);//导入java.io.InputStream;
            SqlSessionFactory factory =new SqlSessionFactoryBuilder().build(is);
            return factory;
            
        }
        /**
         * 获取SqlSession
         * 返回SqlSession
         */
        public static SqlSession getSqlSession(){
            return getSqlSessionFactory().openSession();
        }
        /**
         * 获取SqlSession
         * 参数 isAutoCommit
         * true 表示创建的SqlSession对象在执行完SQL之后会自动提交事务
         * false表示创建的SqlSession对象在执行SQL之后不会自动提交事务,这时就需要我们手动调用sqlSession.commit()提交事务
         * 返回 SqlSession
         */
        public static SqlSession getSqlSession(boolean isAutoCommit){
            return getSqlSessionFactory().openSession(isAutoCommit);
        }
    
    }

    3.基于XML实现对表CRUD的操作:

    
    
    package codeRose.test;
    
    import java.util.List;
    
    import org.apache.ibatis.session.SqlSession;
    import org.junit.Test;
    
    import codeRose.dao.User;
    import codeRose.util.MyBatisUtil;
    
    public class TestCRUDByXmlMapper {
        @Test
        public void testAdd() {
            /**
             * 获取SqlSession
             * 
             * @param isAutoCommit
             *            true 表示创建的SqlSession对象在执行完SQL之后会自动提交事务 
             *            false
             *            表示创建的SqlSession对象在执行完SQL之后不会自动提交事务,这时就需要我们手动调用sqlSession.commit()提交事务
             * @return SqlSession
             */
            // SqlSession sqlSession =MyBatisUtil.getSqlSession(false);
            SqlSession sqlSession =MyBatisUtil.getSqlSession(true);
            /**
             * 映射sql的标识字符串,
             * codeRose.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值
             * addUser是insert标签的id属性值,通过insert标签的id属性值就可以找到要执行的SQL
             * 
             */
            String statement="codeRose.mapping.userMapper.addUser";//映射sql的标识字符串
            User user =new User();
            user.setId(3);
            user.setName("codeRose");
            user.setAge(24);
            int retResult =sqlSession.update(statement,user);
            //执行完SQL之后需要关闭SqlSession
            sqlSession.close();
            System.out.println(retResult);
        }
        @Test
         public void testUpdate(){
                SqlSession sqlSession = MyBatisUtil.getSqlSession(true);
                /**
                 * 映射sql的标识字符串,
                 * me.gacl.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,
                 * updateUser是update标签的id属性值,通过update标签的id属性值就可以找到要执行的SQL
                 */
                String statement = "me.gacl.mapping.userMapper.updateUser";//映射sql的标识字符串
                User user = new User();
                user.setId(3);
                user.setName("孤傲苍狼");
                user.setAge(25);
                //执行修改操作
                int retResult = sqlSession.update(statement,user);
                //使用SqlSession执行完SQL之后需要关闭SqlSession
                sqlSession.close();
                System.out.println(retResult);
            }
            
         @Test
            public void testDelete(){
                SqlSession sqlSession = MyBatisUtil.getSqlSession(true);
                /**
                 * 映射sql的标识字符串,
                 * me.gacl.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,
                 * deleteUser是delete标签的id属性值,通过delete标签的id属性值就可以找到要执行的SQL
                 */
                String statement = "me.gacl.mapping.userMapper.deleteUser";//映射sql的标识字符串
                //执行删除操作
                int retResult = sqlSession.delete(statement,5);
                //使用SqlSession执行完SQL之后需要关闭SqlSession
                sqlSession.close();
                System.out.println(retResult);
            }
            
          @Test
            public void testGetAll(){
                SqlSession sqlSession = MyBatisUtil.getSqlSession();
                /**
                 * 映射sql的标识字符串,
                 * me.gacl.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,
                 * getAllUsers是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL
                 */
                String statement = "me.gacl.mapping.userMapper.getAllUsers";//映射sql的标识字符串
                //执行查询操作,将查询结果自动封装成List<User>返回
                List<User> lstUsers = sqlSession.selectList(statement);
                //使用SqlSession执行完SQL之后需要关闭SqlSession
                sqlSession.close();
                System.out.println(lstUsers);
            }
    
    }
    
    
    
     
  • 相关阅读:
    ubuntu12.04 安装CAJViewer-ubuntu(待解决)
    ROS中遇到的一些问题和解决(更新)
    Virtualbox主机和虚拟机之间文件夹共享及双向拷贝
    Ubuntu自带截图工具screenshoot
    Ubuntu vim终端常用的快捷键
    Ubuntu终端多窗口分屏Terminator
    Apollo快速安装视频教程
    ML--XOR问题
    DL之Example1--MNIST
    Python之ML--人工神经网络识别图像
  • 原文地址:https://www.cnblogs.com/codeRose/p/6555184.html
Copyright © 2011-2022 走看看