一周实习总结
经过一段时间的自己学习,最近两周开始接触公司的核心项目了,最近一个月学的东西终于可以有地方可以施展了,公司给了我同事们已经开发好的平台从中拿掉一两个场景,让我也开始进行场景开发,其实自己拿到代码的时候心里还是很没有底的,因为自己从来没有接触过真正公司里的项目,以前自己在学校最多也就是进行做一些课程设计之类的小型项目,但是经过一周时间的边看边学习,还是觉得并不是当初想的那么复杂,公司自己也有一套自己的开发规则,只要弄清楚整个开发流程还是没有什么大问题的,只是其中有一些重要的点没有人家处理得那么好,也许是自己还没有太多的开发经验,但这个项目使用的是mybatis,而自己以前用的是hibernate框架,所以遇到了一些问题,本文就总结了一些有关mybatis的学习总结以及容易出错的地方,希望能够帮助到大家!
一、具体相关步骤:
添加Mybatis的配置文件conf.xml
定义表所对应的实体类,如下图所示:
定义操作数据表的sql映射文件,相当于Dao层(用于定义SQL语句和映射信息)
具体代码:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 这里我们要通过xml来进行数据库的操作,所以我饿美女给这个mapper指定一个唯一的空间名称, -->
<mapper namespace="com.mpc.mybaits.model.UserMapper">
<!-- 这里定一个select方法,从user表中查找指定id的数据,然后用 resultType="User" User类来进行包装 -->
<!-- id是这个方法的唯一标识,通过id来调用这个方法,parameterType是传入的参数的类型,这里是整形。通过#{xxx}来获得传入的参数-->
<select id="selectUserByID" parameterType="int" resultType="User">
select * from `user` where id = #{id}
</select>
</mapper>
二、需要注意的几个点:
namespace有重要作用,不要重复,调用此文件定义增删改查操作是需要指定namespace;
增加语句:
<!--parameterType因为前面定义过Alias所以不需要写包名,否则要写全包名加类名-->
<insert id="insert" parameterType="PersonEntity">
insert into t_person(id, name) values(#{id}, #{name})
</insert>
<!--调用的时候要注意写namespace+id-->
- 删除语句:
<delete id="deleteInfo" parameterType="int">
delete from t_person where id=#{id}
</delete>
- 修改语句:
<update id="updateInfo" parameterType="PersonEntity">
update t_person set name=#{name} where id=#{id}
</update >
- 查找语句:
<!--查询单行记录-->
<select id="queryById" parameterType="int" resultType="PersonEntity">
select * from t_person
</select>
<!--查询多行记录-->
<select id="queryAll" resultType="PersonEntity">
select * from t_person
</select>
<!--查询返回Map类型查询结果-->
<select id="queryPerson" parameterType="int" resultType="java.util.HashMap">
select id, name from t_person where id=#{id}
</select>
- 在SqlMap.xml定义操作时,如果查询结果字段名和Java POJO属于不一致时,需要使用元素显示指定映射关系,例如
<select id="queryAll1" resultMap="personMap">
select id, name from t_person
</select>
<resultMap id="personMap" type="PersonEntity">
<result property="no" column="id" />
<result property="username" column="name" />
</resultMap>