• MyBatis之sql映射文件


    MyBatis的强大之处就在于它的sql映射文件,下面介绍sql映射文件的几个顶级元素配置

    1)mapper:映射文件的根元素节点,只有一个namespace(命名空间)

       *  用于区分不同的mapper,全局唯一

       *  绑定dao接口,即面向接口编程, 当,namespace绑定某一接口之后,可以不用写该接口的实现类,MyBatis会通过接口的完整的限定名查找到对应的mapper配置来执行sql语句,应此namespace的命名必须要跟接口同名。

    2)cache:配置给定的命名空间的缓存

    3)cache——ref:从其他冥冥空间的引用缓存配置

    4)resultMap:用来描述数据库结果集和对象的对应关系

    5) sql : 可以重用的sql块,也可以被其他语句引用

    6) insert:映射插入语句

    7) update :映射更新语句

    8) delete  :映射删除语句

    9)select   :映射查询语句

    1.使用select完成单条件查询

    1〉dao曾方法   

     public List<User> findAll();

    2〉xml文件  

     <select id="findAll" resultType="User">
            SELECT  * FROM  user 
        </select>

    3〉测试方法

        public  void findAll(){
            Logger logger = Logger.getLogger(UserTest.class);
            SqlSession sqlSession = null;
            try {
                //3.创建sqlSession
                sqlSession = MyBatisUtil.createSqlSession();
               List<User> list = sqlSession.getMapper(IUserDao.class).findAll();
               for (User user : list){
                logger.debug("list---------->"+user.getUserName()+"	"+user.getUserCode());
               }
            } catch (Exception e) {
                e.printStackTrace();
            }finally {
               MyBatisUtil.closeSqlSession(sqlSession);
            }
    
        }

    2.使用select完成多条件查询

    1〉dao层方法

     //多条件查询
        public  List<User>  findListByManneyContent(Map<String, Object> map);

    2〉xml文件的sql语句

     <!--多条件查询-->
        <select id="findListByManneyContentIndex" resultType="User">
            SELECT  * FROM  user  where  userName LIKE CONCAT('%',#{0},'%') AND id>=#{1}
        </select>

    3〉测试方法

     //多条件查询,查询id〉2的员工姓名
        @Test
        public  void  findListByManneyContentIndex(){
            SqlSession sqlSession = null;
            try {
                sqlSession = MyBatisUtil.createSqlSession();
                List<User> list = sqlSession.getMapper(IUserDao.class).findListByManneyContentIndex("",2);
                for (User user : list) {
                    System.out.println("user-------->"+user.getUserCode()+"	" +user.getUserName());
                }
            } catch (Exception e) {
                e.printStackTrace();
            }finally {
                MyBatisUtil.closeSqlSession(sqlSession);
            }
    
        }

    3.使用insert完成增加功能

    1〉dao层方法

    //增加的方法
    public void add(Role role);

    2〉xml配置的sql语句

    <insert id="add"  parameterType="Role">
    INSERT INTO role(roleCode,roleName) VALUES (#{roleCode},#{roleName})
    </insert>

    3〉测试方法

     //增加的方法
        @Test
        public  void addTest(){
            SqlSession sqlSession = null;
            Role role = new Role();
            role.setRoleCode("SALE");
            role.setRoleName("销售");
            try {
                sqlSession = MyBatisUtil.createSqlSession();
                sqlSession.getMapper(RoleMapper.class).add(role);
                sqlSession.commit();
            } catch (Exception e) {
                e.printStackTrace();
                sqlSession.rollback();
            }finally {
                MyBatisUtil.closeSqlSession(sqlSession);
            }
        }

    4.使用update完成修改功能

    1〉dao层方法

      //修改的方法
        public int  update(User user);

    2〉xml配置文件的sql语句

     <update id="update" parameterType="User">
              UPDATE user SET userCode=#{userCode},userName=#{userName} WHERE  id=#{id}
        </update>

    3〉测试方法

     @Test
        public void update(){
            Logger logger = Logger.getLogger(UserTest.class);
            SqlSession sqlSession = null;
            User user = new User();
            user.setId(6);
            user.setUserCode("test06");
            user.setUserName("张三");
            try {
                sqlSession = MyBatisUtil.createSqlSession();
                sqlSession.getMapper(IUserDao.class).update(user);
                sqlSession.commit();
            } catch (Exception e) {
                e.printStackTrace();
                sqlSession.rollback();
            }finally {
                MyBatisUtil.closeSqlSession(sqlSession);
            }
    
    
        }

    5.使用delete完成删除功能

    1〉dao层方法

    //删除的方法
        public  void  delete(Role role);

    2〉xml配置文件的sql语句

    <delete id="delete" parameterType="Role">
            DELETE  from  role  WHERE  id=#{id}
        </delete>

    3〉测试方法

     //删除的方法
        @Test
        public void deleteTest(){
            Role role = new Role();
            role.setId(5);
            SqlSession sqlSession = null;
            try {
                sqlSession = MyBatisUtil.createSqlSession();
                sqlSession.getMapper(RoleMapper.class).delete(role);
                sqlSession.commit();
            } catch (Exception e) {
                e.printStackTrace();
                sqlSession.rollback();
            }finally {
                MyBatisUtil.closeSqlSession(sqlSession);
            }
        }
  • 相关阅读:
    缓冲流
    properties类
    io流
    异常处理
    file的概述和作用
    map集合和set集合
    js 判断是否是undefined null NaN
    java instanceof 判断是否是String
    ajax获取数据中文乱码问题最简单的完美解决方案
    if else if else if else 的用法
  • 原文地址:https://www.cnblogs.com/cn-930621/p/7571954.html
Copyright © 2020-2023  润新知