1,mybatis中操作注意点
1,update语句与insert语句返回值是语句影响数据库的行数,而不是成功执行就返回1,
Dog dag = new Dog("a");
//插入一个对象执行成功返回1
Integer affectNo = daoImpl.insert(dog);
List dogs = new ArrayList();
dogs.add(new Dog("b"));
dogs.add(new Dog("c"))
//更新两个对象的信息,执行成功后,返回2
Integer affectNo =daoImpl.update(dogs);
2,同一个事务的操作中,前面方法对数据库进行的写操作,会改变事务内数据库的数据,能够在下一个方法的查询方法中被查询到。
3,实体类(entity)对象的属性< 数据库的字段时=> 不会报错
实体类(entity)对象的属性> 数据库的字段时=> 会报错
4,数据表对应的entity 的类,必须有无参的构造方法,不然sql语句会报错
2,插入数据时,返回自增主键id
INSERT INTO account (`account_id`, `total_point`) VALUES (#{accountId}, #{totalPoint})
//主键是自增策略的情况下,设置每插入一条数据,返回数据的ID
select LAST_INSERT_ID()//取到最后生成的主键
insert into tb_content_category (id, parent_id, name,
status, sort_order, is_parent,
created, updated)
values (#{id,jdbcType=BIGINT}, #{parentId,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR},
#{status,jdbcType=INTEGER}, #{sortOrder,jdbcType=INTEGER}, #{isParent,jdbcType=BIT},
#{created,jdbcType=TIMESTAMP}, #{updated,jdbcType=TIMESTAMP})
3,动态拼接sql语句
//List参数在mybatis中的拼接方法(idList是传入的list类型参数)
AND opr.order_id IN
#{item}
4,exists函数的用法
AND NOT EXISTS (select 1 FROM order_xxx WHERE order_xx=opr.id AND is_receive=1)
5,mysql创建新用户并授权相关表
Mysql 本地的安装路径:
/usr/local/mysql/bin/mysql -u root -p
创建新用户
create user admin identified by ‘admin‘;
授权:
grant all on db32.* to admin;