<?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"> <!-- namespace 命名空间,作用就是对sql进行分类化管理,理解为sql隔离 注意:使用mapper代理方法开发,namespace有特殊重要的作用 --> <mappernamespace="test"> <!-- 在映射文件中配置很多sql语句 --> <!--需求:通过id查询用户表的记录 --> <!-- 通过select执行数据库查询 id:标识映射文件中的sql,称为statement的id 将sql语句封装到mappedStatement对象中,所以将id称为statement的id parameterType:指定输入参数的类型 #{}标示一个占位符, #{value}其中value表示接收输入参数的名称,如果输入参数是简单类型,那么#{}中的值可以任意。 resultType:指定sql输出结果的映射的java对象类型,select指定resultType表示将单条记录映射成java对象 --> <selectid="findUserById"parameterType="int"resultType="com.iot.mybatis.po.User"> SELECT * FROM user WHERE id=#{value} </select>
<!-- 根据用户名称模糊查询用户信息,可能返回多条 resultType:指定就是单条记录所映射的java对象类型 ${}:表示拼接sql串,将接收到参数的内容不加任何修饰拼接在sql中。 使用${}拼接sql,引起 sql注入 ${value}:接收输入参数的内容,如果传入类型是简单类型,${}中只能使用value --> <selectid="findUserByName"parameterType="java.lang.String"resultType="com.iot.mybatis.po.User"> SELECT * FROM user WHERE username LIKE '%${value}%' </select>
/** * Created by Brian on 2016/2/24. */ publicclassUserDaoImplimplementsUserDao{ // 需要向dao实现类中注入SqlSessionFactory // 这里通过构造方法注入 private SqlSessionFactory sqlSessionFactory;
@Override public User findUserById(int id)throws Exception { SqlSession sqlSession = sqlSessionFactory.openSession(); User user = sqlSession.selectOne("test.findUserById",id); //释放资源 sqlSession.close(); return user; }