mybatis
Denial_learn
个人博客,以个人实例或技术为主!如有不喜,请勿喷。
展开
-
配置过滤器(解决乱码)
<filter> <!--注意这里是filter,不要配置成servlet--> <filter-name>encodingFilter</filter-name> <!--过滤器名称--> <filter-class>org.springframework.web.filt...原创 2019-11-14 19:56:21 · 226 阅读 · 0 评论 -
mybatis注解的详细使用(一对一,一对多详细解释带代码)
1. @Results与 @Result的使用@Result是最简单的映射,指定@Resul将基本数据库表字段,装配到实体类属性的映射。column是数据库表的列名property实体的字段举例说明:实体字段 表的列名 sid stuidsname stunamegid gidgrade ...原创 2019-11-01 21:16:01 · 837 阅读 · 0 评论 -
mybatis注释使用(resultMap对应的注释,以及对应注解Results、Result、One、Many的使用)
有一部分建立在我上一个博客,mybatis注释使用(单表查询),如果那里看不懂了,建议看下我上一个博客(里面所有的配置文件,接口,数据库的创建都有说明)<resultMap>对应的注解:1.@Results注解代替的是标签<resultMap >该注解中可以使用单个@Result注解,也可以使用@Result集合@Results({@Result(),@Resul...原创 2019-11-01 20:44:38 · 5022 阅读 · 1 评论 -
mybatis注解开发(单表查询)
注解说明:MyBatis可以利用SQL映射文件来配置,也可以利用Annotation来设置。MyBatis提供的一些基本注解如下表所示:注解目标相应的XML描述@CacheNamespace类<cache>为给定的命名空间(比如类)配置缓存。属性:implemetation,eviction,flushInterval , size 和 readWri...原创 2019-11-01 20:34:32 · 398 阅读 · 0 评论 -
Mybatis-config.xml核心配置文件
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <pr...原创 2019-11-01 18:53:48 · 283 阅读 · 1 评论 -
mybatis分页插件的使用
首先创建的是maven项目,在pom里面进行添加依赖 <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>3.7.5</version> <...原创 2019-11-01 17:03:30 · 119 阅读 · 0 评论 -
mybatis高级查询一对多
需求:查询订单,查询出一个下单人信息并查询出订单详情(解析:一个订单可以有多个订单详情(一个订单详情里面是一个商品),所以来说,订单对订单详情是一对多的情况)SQL语句:select u.id uid,u.user_name,u.password,u.name,u.age,u.sex,u.birthday,u.created,u.updated,o.id oid,o.user_i...原创 2019-11-01 15:23:20 · 108 阅读 · 0 评论 -
mybatis高级查询之一对一
需求:查询订单,查询出订单人的信息(以订单为主,一个订单对应一个用户,实现一对一)SQL语句为:(这里设置的有别名,方便resultMap进行匹配)select u.id uid,u.user_name,u.password,u.name,u.age,u.sex,u.birthday,u.created,u.updated,o.id oid,o.user_id,o.order_num...原创 2019-11-01 14:51:17 · 118 阅读 · 0 评论 -
mybatis当中的缓存(一级缓存和二级缓存)
一级缓存:Mybatis的一级缓存的作用域是session,当openSession()后, 如果执行相同的SQL (相同语句和参数),Mybatis不进行执行SQL,而是从缓存中命中返回。原理:Mybatis执行查询时首先去缓存区命中,如果命中直接返回,没有命中则执行SQL,从数据库中查询。在mybatis中,一级缓存默认是开启的,并且一直无法关闭(我们没法去管理一级缓 存)...原创 2019-10-30 20:18:47 · 233 阅读 · 0 评论 -
动态sql(if,choose, when,otherwise,where,set,foreach,trim)
MyBatis的-一个强大的特性之-通常是它的动态SQL能力。提供了OGNL表达式动态生成SQL的功能。动态SQL有:ifchoose, when, otherwisewhere, setforeach下面都以示例来进行说明动态SQL的用法!if:进行判断需求1:查询男性用户,如果输入了姓名,进行模糊查找,如果不输入就按男性用户来查询。定义接口/** *查询男性用户,如...原创 2019-10-30 18:25:41 · 1286 阅读 · 0 评论 -
SQL片段的作用和使用
作用:将重复的sql语句抽出来放到sql标签中,然后通过<include refid=”” />来引入<sq1 id="userColumns">id,user_name,password,name,age,sex,birthday,created,updated</sql><select id= "queryUserByID" paramet...原创 2019-10-30 15:47:26 · 4340 阅读 · 0 评论 -
ResultMap的使用
ResultMap是Mybatis中最重要最强大的元素,使用ResultMap可以解决两大问题:POJO属性名和表结构字段名不一致的问题完成高级查询,比如说,一对一、一对多、多对多。解决表字段名和属性名不-致的问题有两种方法:如果是驼峰似的命名规则可以在Mybatis配置文件中设置解决使用ResultMap解决。使用别名示例:<!-- id:唯一标识 type:结...原创 2019-10-30 12:03:51 · 446 阅读 · 0 评论 -
#{}与${}的区别
简单的来说 ${} 相当于 statement对象 #{} 相当于 Preparedstatement对象${}字符串拼接,#{}参数站位相当于jdbc中的?${}不能够防止sql注入,#{}可以防止sql注入的${}可以替换sql语句任何一个内容,#{}只能替换参数${}如果操作字符串,需要在sql中使用单引号。 #{}不需要(不需要判断数据类型,会自动转换)(${}要...原创 2019-10-30 11:47:16 · 97 阅读 · 0 评论 -
${}的用法----传入参数和接受参数
${} 数据:是进行字符串拼接。如果使用${} 去取出参数信息,则需要在方法的参数列表上加上一个注释@param 表示参数的名字sql语句动态生成的时候,使用${};这里使用到@param后边,相当于给这个变量起了一个名字,在${}调用的时候,必须使用这个名字,要保持一致!!!!示例:mapper接口的内容:mapper.xml中的内容:新写一个接口的方法测试:...原创 2019-10-30 11:41:13 · 1563 阅读 · 0 评论 -
获取自增的id的值(insert时)
就是添加到数据库一条信息之后,可以自动的获取自增长id并返回测试:User.getId();就可以直接拿到自增的id如图:测试结果为:原创 2019-10-30 11:32:07 · 856 阅读 · 0 评论 -
写给自己看的(编写测试用例,也就是执行的整个过程代码)
public class UserDaoTest { //new 一个userDao对象 private UserDao userDao;//接口 private SqlSession sqlSession;//定义成全局的对象 @Before//执行test方法之前执行 public void setUp() throws Exception { String resou...原创 2019-10-29 16:40:43 · 610 阅读 · 0 评论 -
mappers----映射器(也就是mybatis--config.xml内引用mapper.xml文件)
作用:将mapper.xml 文件配置到mybatis-config.xml的环境中。<mapper url=”file…xml”这种是在硬盘中读取的,这种几乎不用使用mapper接口路径这里所谓的mapper接口路径。实际上就是dao的接口路径。在mybatis中,通常把dao的包叫做mapper!!类名,也叫做mapper定义一个接口在接口所在的包中定义mapper.xml...原创 2019-10-29 16:34:45 · 470 阅读 · 0 评论 -
typeAliases起别名(给类起别名),使用扫描包
给一个类起别名:缺点:需要为每一个类都去定义一个类型别名。书写麻烦。typeAliases的使用—使用扫描包(就是在使用select时有返回值的时候,进行填写返回值)...原创 2019-10-29 16:19:09 · 1202 阅读 · 1 评论 -
动态代理mapper实现类
使用动态代理的目标是可以不用书写实现类,只需要书写接口和mapper.xml即可完成crud的操作也就是只需要写接口,不用写实现类(类似于dao层和impl层,使用动态代理的话,只需要写dao层,impl使用)第一:名称空间的命名mapper.xml 根标签的 namespace 属性如果使用到了动态代理接口,就需要namespace 中的值,和需要对应的Mapper(dao)接口的全路径...原创 2019-10-29 16:00:59 · 614 阅读 · 0 评论 -
mybatis数据库字段名和实体类属性名不一致的问题(驼峰匹配)
查询数据的时候,查不到userName的信息,原因:数据库的字段名是user_name POJO中的属性名字是userName两端不一致,造成mybatis无法填充对应的字段信息。修改方法:在sql语句中使用别名解决方案一:在sql语句中使用别名(麻烦)例如:Select * , user_name as username from t_user;解决方案二: 参考驼峰匹配 —...原创 2019-10-29 15:33:37 · 2080 阅读 · 0 评论 -
在mybatis中添加日志(log4j)
1. 首先在项目里面存放log4j.properties文件这个文件大致都是一样的,这里提供一个简单的log4j配置文件log4j.rootLogger=DEBUG,A1log4j.logger.org.mybatis=DEBUGlog4j.appender.A1=org.apache.log4j.ConsoleAppenderlog4j.appender.A1.layout=org.a...原创 2019-10-29 15:25:20 · 976 阅读 · 0 评论 -
mybatis入门(配置全局变量,连接数据库,执行sql语句)
第一步:(创建一个数据库)第二步:创建一个,maven项目(这里我创建的是一个java项目)第三步:添加依赖(也就是导包)<dependencies> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <!-- https://mvnrepository.c...原创 2019-10-25 17:38:32 · 899 阅读 · 0 评论