XML文件
在resource下面建立一个包,命名为mapper,再创建sring config文件
/p>
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
SELECT*FROM t1
WHERE id=#{id}
注意头部的两个标签,制定了xml的属性信息,是公用的
其次指定标签表示其为在mapper中使用的信息,同时指定命名空间namespace(就是在mapper中定义的类名)
在内即包含了由sql语句命名的标签,如
在中,需要指定id,即namespace中的类对应的方法名(此处就完成了XML文件中sql语句和mapper文件中类方法的连接)
同时也需要指定resultType,来表示返回值的类型,如果是自定的实体类,需要完成写出,如com.Lee.connect.table.TableUser
如果没有返回值,则不需要指定
对于自增长id(增加数据操作),将如下的@Option设置添加到标签内
@Options(useGeneratedKeys = true,keyProperty = "id",keyColumn = "id")
此时在select标签中就可以写入相应的select语句,但仍要使用mapper中定义的变量
(sql语句建议使用大写,并在必要的地方换行)
属性文件
mybatis.mapper-locations=classpath:**/mapper/*.xml
作用是扫描Mapper接口对应的XML文件,此处指的是resources下mapper位置对应的所有xml文件
mybatis.typeAliasesPackage=com.Lee.connect.mapper
使用如上方法来指定项目中的mapper
logging.level.com.Lee.connect.mapper=debug
使用logging.level来对mapper的执行进行输出
http请求调用了mapper,其会在idea控制台输出程序的执行信息,即调试日志
mapper
packagecom.Lee.connect.mapper;importcom.Lee.connect.table.TableUser;import org.apache.ibatis.annotations.*;importorg.springframework.stereotype.Component;
@Mapper
@Component(value= "UserMapper")public interfaceUserMapper {//select
TableUser getUserById(@Param("id") Integer id);
此时就可以不使用注解@Select进行加载,而可以直接定义方法
动态sql语句
mapper语句
//select by page
List getUserByPage(@Param("UserName") String UserName);
此处会返回多条数据,所以使用LIst来接收对象的多个数据
注意此处需要调用如下库
import java.util.List;
系统有时会自动调用如下库,会报错
import java.awt.*;
controller语句
@RequestMapping(value = "/getUserByPage")
@ResponseBodypublic Object getUserByPage(@RequestParam("UserName") String UserName){
List users =userMapper.getUserByPage(UserName);returnusers;
}
此处同样使用LIst实例后的user对象接收多条数据
sql语句
select *from sys_test
where1=1
and name=#{name}
标签里的内容会将select * from sys_test的数据进一步细分
在其内部添加,注意条件选择一般会加上and,表示条件符合则继续执行(sql中每个语句前面都要加个关键字)
所以上述的执行就是如果test中的name = != null成立,则执行where 1=1 and name = #{name}
(1=1的作用就是后面可以使用and来连接多个条件)
此处就是if条件成立,则共同执行1=1和name=#{name}
因为此处的where没有<>