mybatis簡單的增刪改查
select語句
id : 就是對應(yīng)的namespace中的方法名养匈;
resultType:Sql語句執(zhí)行的返回值!
parameterType : 參數(shù)類型都伪!
特別注意:mybatis配置文件中不能出現(xiàn)中文注釋呕乎!
1、在編寫接口陨晶,跟據(jù)ID查詢用戶:
public interface UserDao {
List<User> getUserList();
//根據(jù)ID查詢用戶
User getUserById(int id);
2猬仁、編寫對應(yīng)的mapper中的sql語句:
<--根據(jù)ID查詢用戶,參數(shù)為int先誉,所以parameterType="int"-->
<select id="getUserById" parameterType="int" resultType="com.kuang.pojo.User">
select * from mybatis.user where id = #{id}
</select>
3湿刽、在測試類添加測試方法,然后測試:
//查
@Test
public void getUserById(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//查詢ID為1的用戶
User userById = mapper.getUserById(1);
System.out.println(userById);
//關(guān)閉SqlSession
sqlSession.close();
}
模糊查詢
1、Java代碼執(zhí)行的時候褐耳,傳遞通配符 % %
List<User> userLike = mapper.getUserLike("%李%");
如圖:
2诈闺、在sql拼接中使用通配符!
select * from mybatis.user where name like "%"#{value}"%"
如圖:
Insert語句
1铃芦、編寫接口:
//insert增加一個用戶
int addUser(User user);
2雅镊、編寫對應(yīng)的mapper中的sql語句:
<!--對象中的屬性襟雷,可以直接取出來-->
<insert id="addUser" parameterType="com.kuang.pojo.User">
insert into mybatis.user (id,name ,pwd) value (#{id},#{name},#{pwd});
</insert>
3、編寫測試類:
//注意:增刪改需要提交事務(wù)
//增
@Test
public void addUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//插入一個ID為4仁烹,用戶名為鬼谷子耸弄,密碼為123465的用戶
int res = mapper.addUser(new User(4, "鬼谷子", "123465"));
if (res>0){
System.out.println("插入成功!");
}
//提交事務(wù)
sqlSession.commit();
//關(guān)閉SqlSession
sqlSession.close();
}
update使用
1卓缰、編寫接口:
//修改用戶
int updateUser(User user);
2计呈、編寫對應(yīng)的mapper中的sql語句:
<update id="updateUser" parameterType="com.kuang.pojo.User">
update mybatis.user set name=#{name},pwd=#{pwd} where id = #{id} ;
</update>
3、編寫測試類:
//注意:增刪改需要提交事務(wù)
//改
@Test
public void updateUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//為ID是1的用戶修改用戶名為鬼谷仙生征唬,密碼為654321
mapper.updateUser(new User(1,"鬼谷仙生","654321"));
//提交事務(wù)
sqlSession.commit();
//關(guān)閉SqlSession
sqlSession.close();
}
Delete使用
1捌显、編寫接口:
//刪除一個用戶
int deleteUser(int id);
2、編寫對應(yīng)的mapper中的sql語句:
<delete id="deleteUser" parameterType="int">
delete from mybatis.user where id = #{id};
</delete>
3鳍鸵、編寫測試類:
//注意:增刪改需要提交事務(wù)
//刪
@Test
public void deleteUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//刪除ID為4的用戶
mapper.deleteUser(4);
//提交事務(wù)
sqlSession.commit();
System.out.println("刪除成功苇瓣!");
//關(guān)閉SqlSession
sqlSession.close();
}
Map的使用
實體類或者數(shù)據(jù)庫中的表,字段或者參數(shù)過多偿乖,我們可以使用Map击罪!
1、編寫Map接口
//萬能的Map
int addUser2(Map<String,Object> map);
2贪薪、編寫對應(yīng)的mapper中的sql語句:
<!--對象中的屬性媳禁,可以直接取出來 傳遞map的key-->
<insert id="addUser2" parameterType="map">
insert into mybatis.user (id, pwd) values (#{userid},#{passWord});
</insert>
3、編寫測試類:
//萬能Map
//增
@Test
public void addUser2(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
Map<String,Object> map = new HashMap<String, Object>();
map.put("userid",4);
map.put("passWord","123456");
mapper.addUser2(map);
sqlSession.commit();
sqlSession.close();
}
注意:
Map傳遞參數(shù)画切,直接在sql中取出key即可竣稽! 【parameterType="map"】
對象傳遞參數(shù),直接在sql中取對象的屬性即可霍弹!【parameterType="Object"】
只有一個基本類型參數(shù)的情況下毫别,可以直接在sql中取到!
多個參數(shù)用Map典格,或者注解岛宦!
解決屬性名和字段名不一致的問題
數(shù)據(jù)庫中的字段跟類中的字段名字不一樣,導(dǎo)致操作數(shù)據(jù)庫出錯耍缴!
解決方法一:在sql語句中起別名
<select id="getUserById" resultType="com.kuang.pojo.User">
select id,name,pwd as password from mybatis.user where id = #{id}
</select>
解決方法二:使用resultMap結(jié)果集映射
<!--結(jié)果集映射-->
<resultMap id="UserMap" type="User">
<!--column數(shù)據(jù)庫中的字段砾肺,property實體類中的屬性-->
<result column="id" property="id"/>
<result column="name" property="name"/>
<result column="pwd" property="password"/>
</resultMap>
<select id="getUserById" resultMap="UserMap">
select * from mybatis.user where id = #{id}
</select>
分類: [SSM框架]
[圖片上傳失敗...(image-259805-1628319728443)]