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);
        }
    }
原文地址:https://www.cnblogs.com/cn-930621/p/7571954.html