mybatis优化.修改和查询处理
优化:
1. SqlSession默认自动提交事务,若需要自动提交事务
可以使用SqlSessionFactory.openSession(true);
2. 加入log4j日志功能:
①加入依赖
<!-- log4j日志 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
②加入log4j的配置文件
log4j的配置文件名为log4j.xml,存放的位置是src/main/resources目录下
日志的级别
FATAL(致命)>ERROR(错误)>WARN(警告)>INFO(信息)>DEBUG(调试)
封装jdbc的过程中遵循规则:字段名跟属性名一致
删除和修改
mybatis功能是面向接口功能
所以应该是先有mapper接口中的方法,然后在通过这个方法在去找到当前映射文件中的sql
写功能的时候,先写mapper接口中的方法,然后在根据我们当前的方法去我们相对应映射文件中然后去写sql语句。
/**
*修改用户信息
* 返回值为int(增删改返回值固定的)
* 也可以不用返回值 设置为void
*/
void updateUser();
/**
* 删除用户信息
*/
void deleteUser();
添加映射文件:
</insert>
<!--void updateUser();-->
<update id="updateUser">
update t_user set username='ls' where id=3
</update>
<!--void deleteUser();-->
<delete id="deleteUser">
delete from t_user where id=3
</delete>
//测试类
查询
/**
* 根据id查询用户信息
*/
User getUserById();
/**
* 查询所有的用户信息
* 查询一条数据,对应的就是我们的实体类对象,
* 查询多条数据,对应的就是List集合
*/
List<User> getAllUser();
<!--User getUserById();-->
<!--It's likely that neither a Result Type nor a Result Map was specified.
上述:为什么报错给出的解决方案;因为我们没有去设置它的一个结果类型,
我们当前mybatis执行完sql语句后并不知道要转换什么样的一个实体类对象
所以必须要设置:resultType或 resultMap 结果类型之后,
它就可以将我们查询出来的结果转换成我们所设置的结果类型,
如果在把我们最终结果然后作为返回值返回给我们当前接口的方法
-->
<!--
查询功能的标签必须设置resultType或resultMap
resultType:设置默认的映射关系
resultMap:设置自定义的映射关系:如果字段名跟属性名不一致的情况下,才需要用到resultMap,(多对一,一对多关系)
查询的时候我们每个查询结果可能都不一样,所以一定要想好当前查询的结果应该是什么,
如果你查询的结果是一条,就可以用实体类对象
如果查询的结果是多条,就可以用list集合
-->
<select id="getUserById" resultType="com.atguigu.mybatis.pojo.User">
select * from t_user where id=1
</select>
<!-- List<User> getAllUser(); -->
<select id="getAllUser" resultType="com.atguigu.mybatis.pojo.User">
select * from t_user
</select>
浙公网安备 33010602011771号