mybatis基本操作

1.Mybatis日志

具体选择哪个日志实现由 MyBatis 的内置日志工厂确定。它会使用最先找到的。
Mybatis 内置的日志工厂提供日志功能,具体的日志实现有以下几种方式:
SLF4J|LOG4J|JDK_LOGGINGCOMMONS_LOGGING|STDOUT_LOGGING
配置日志
<settings>
<setting name="logImpl" value=" STDOUT_LOGGING "/>
</settings>

2.参数传递

单个参数 直接传递
Admin selectAdmins(int id);
多个参数 使用@Param(“id”)绑定
Admin selectAdmins(@Param(“account”)String account,
@Param(“password”)String password);
在Dao层传两个数据时因为mapper中的语句paramtertype中只有一个参数类型,所以传两个以上的参数时可以用@param注解将上图中的xxx放到“account”中去,将yyy放到“password”中。
当然,还可以将account和password放到一个类中,将这个类的对象传过去。
如果传的数据较多在一个对象中可以直接将对象传过去。
这是我们需要将admin对象中的值传递,其中用到
useGeneratedKeys=" 把新增加的主键赋值到自己定义的
keyProperty " keyProperty=“ 接收主键的属性 parameterType=" 参数类型 "
这是我们使用插入语句时可以直接获得admin这个对象在数据库这一行的主键id。

3.增删改查

增添

<insert id=" 唯一标识 " useGeneratedKeys=" 把新增加的主键赋值到自己定义的
keyProperty " keyProperty=“ 接收主键的属性 parameterType=" 参数类型 "> insert into
admin(account,password)values(#{account},#{password})
</insert>  

删除

<delete id= " 唯一标识 " parameterType= " 参数类型 " >
delete from admin where id= #{id}
</delete>

修改

<update id= " 唯一标识 " parameterType=“ 参数类型 ">
update
admin set account= #{account},password= #{password} where
id= #{id}
</update>

查询

<select id=" 唯一标识 " resultType=" 返回结果集类型 ">
select *
from admin where id= #{id}
</select>

4.结果集处理

简单类型输出映射

返回简单基本类型
<select id="findAdminInfoCount" resultType="int">
select count(*) from admin
</select>
对象映射
如果表中的类名与类中的属性名完全相同,mybatis会自动将查询结果封装
到POJO对象中.
如果java中使用标准驼峰命名,数据库中使用下划线连接命名,可以开始全局
设置实现自动转换
<setting name="mapUnderscoreToCamelCase" value="true"/> <select id="findUserInfoById"
parameterType="int"resultType="Admin">
select * from admin where id=#{id}
</select>
mybatis会将查到的信息自动赋值给admin对象

复杂类型输出映射

resutlMap:自定义映射 一般存在多张表时使用包含association(用于一对一),cllection(用于一对多)。
<resultMap id="adminResultMap" type="Admin">
<id column="id" property="id"/>
<result property="account" column="account" />
<result property="password" column="password" />
</resultMap>
(1). resutlMap 的 id 属性是 resutlMap 的唯一标识,本例中定义为
“adminResultMap”
(2). resutlMap 的 type 属性是映射的 POJO 类型
(3). id 标签映射主键,result 标签映射非主键
(4). property 设置对象属性名称,column 映射查询结果的列名称

在学生对象中存在major对象,在查询出结果集时需要major对象中专业的名称,通过resultMap自定义映射先将Student中的 id,num,name,gender赋值之后再通过association把Major对象中的名字赋值给major属性。

在一个major中含有多个student对象,所以使用collection。

 嵌套查询

这是先查一个专业表,再查一个学生表信息赋值。

5.{} ${}区别

#{} 占位符, 是经过预编译的,编译好 SQL 语句再取值 ,#方式能够防止 sql 注入
#{}:delete from admin where id=#{id}
结果: delete from admin where id = ?
${}会 将值以字符串形式拼接到 sql 语句 , ${ }方式无法防止 Sql 注入
${}: delete from admin where id=’${id}’
结果: delete from admin where id=’1’
一般是#{ } 向 sql 传值使用, 而使用${ }向 sql 传列名
例如在 order by $ {column} 语句后面可以动态替换列名

6.注解

@Insert : 插入 sql , 和 xml insert sql 语法完全一样
@Select : 查询 sql, 和 xml select sql 语法完全一样
@Update : 更新 sql, 和 xml update sql 语法完全一样
@Delete : 删除 sql, 和 xml delete sql 语法完全一样
@Param : 入参
@Results : 设置结果集合
@Result : 结果
在dao层的方法上面用注解方式对于单张表的简单查询更方便.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值