一.增删改
增:
mapping文件
<insert id="insertUser" parameterType="JiKeUser" statementType="PREPARED"
keyProperty="id" useGeneratedKeys="true">
insert into JikeUser
(userName,password) values
(#{userName},#{password})
</insert>
此处JiKeUser别名,需要在基本配置文件配置环境前配置别名
<typeAliases>
<typeAlias alias="JiKeUser" type="jike.book.pojo.JiKeUser" />
<typeAlias alias="Author" type="jike.book.pojo.Author" />
</typeAliases>
测试:开启session后,新建一个映射pojo,赋予属性后,用
session.insert(“insertUser”, jku);//前一个参数是sqlID,后一个参数是赋值后实体
改:
mapping文件:
<update id="updateUser" parameterType="JiKeUser">
UPDATE JiKeUser SET
userName=#{userName},
password=#{password}
WHERE id = #{id}
</update>
测试:开启session后
JiKeUser jku2=new JiKeUser();
jku2.setUserName("jike00100");
jku2.setPassword("666666");
jku2.setId(2);
session.update("updateUser", jku2);
关session
删除也相差不大
Mybatis保留了接口注解sql,但是有局限性,建议尽量不要使用。
二.查询
传入hashMap:
<select id="loginSelect" resultType="JiKeUser" parameterType="hashmap">
select * from JikeUser where userName=#{userName} and password=#{password}
</select>
测试:
HashMap<String,String> hm=new HashMap();
hm.put("userName", "jike00100");
hm.put("password","666666");
JiKeUser temp=session.selectOne("loginSelect",hm);
if(temp!=null){
System.out.println("登陆成功!");
}
也可以传入的是实体。
如果返回的是List:
mapping:
<select id="selectJiKeUserList" resultType="JiKeUser">
select * from JikeUser
</select>
测试:
List<JiKeUser> ap=session.selectList("selectJiKeUserList");
resultMap解决复杂查询映射问题:
mapping:
<resultMap id="JiKeUserMap" type="JiKeUser">
<id property="id" column="id" />
<result property="userName" column="userName"/>
<result property="password" column="password"/> </resultMap>
<select id="selectUsers" resultMap="JiKeUserMap">
select id, userName, password from JiKeUser
</select>
测试:
List<JiKeUser> ap=session.selectList("selectUsers");
三.Mybatis事务处理:
需要在环境中添加配置事务
有两种方式:JDBC MANGED(第三方插件)
try{
session=sqlMapper.openSession(false); //关闭自动提交
……
session.commit(); //提交事务
}
catch(Exception e)
{ session.rollback();} //回滚事务
finally
{ session.close();} //关闭session
mapping:
<insert id="insertAuthor" parameterType="Author" statementType="PREPARED">
insert into Author(userID,realName,IDCard)
values(#{jikeUser.id},#{realName},#{IDCard})
</insert>
测试:
JiKeUser one=new JiKeUser();
one.setUserName("author001");
one.setPassword("123456");
session.insert("insertUser",one);
System.out.println("新加入的user id="+one.getId());
Author at=new Author();
at.setJikeUser(one);
at.setRealName("一个大牛");
session.insert("insertAuthor", at);
session.commit();//事务提交