狂神MyBatis笔记
代码实现
数据持久层mapper中只需要接口UserMapper,不需要实现类,而是通过.xml文件的naemespace绑定对应接口。
编写代码
实体类
public class User {
private int id;
private String name;
private String pwd;
}Mapper接口
public interface UserMapper {
List<User> getUserList();
}接口实现类由原来的...Impl转为一个Mapper配置文件...Mapper.xml
<!-- namespace = 绑定一个对应的Mapper接口 -->
<!-- 千万不能写错!!!! -->
<mapper namespace="mapper.UserMapper">
<!-- 查询语句 -->
<!-- 里面的id对应上面接口的方法名 -->
<select id="getUserList" resultType="com.wu.pojo.User">
select * from user
</select>
</mapper>
CRUD
1. namespace
namespace中的包名要和mapper接口的包名一致
2. select、insert、update、delete语句
- id:对应接口的方法名
- parameterType:参数类型
- resultType:Sql语句执行的返回值
例1:实现根据id查询用户
Mapper接口中添加方法
public interface UserMapper {
List<User> getUserList();
User getUserById(int id);
}在UserMapper.xml中添加Select语句
<mapper namespace="mapper.UserMapper">
<!-- 查询语句 -->
<!-- 里面的id对应上面接口的方法名 -->
<select id="getUserList" resultType="com.wu.pojo.User">
select * from user
</select>
<!--根据id查询用户,用'#'取方法参数-->
<select id="getUserById" parameterType="int" resultType="com.wu.pojo.User">
select * from User whele id = #{id}
</select>
</mapper>
例2:增加用户
Mapper接口中添加方法
public interface UserMapper {
//查询全部用户
List<User> getUserList();
//根据id查询用户
User getUserById(int id);
//添加用户
int addUser(User user);
}在UserMapper.xml中添加Select语句
<mapper namespace="mapper.UserMapper">
<!-- 查询语句 -->
<!-- 里面的id对应上面接口的方法名 -->
<select id="getUserList" resultType="com.wu.pojo.User">
select * from user
</select>
<!--根据id查询用户,用'#'取方法参数-->
<select id="getUserById" parameterType="int" resultType="com.wu.pojo.User">
select * from User whele id = #{id}
</select>
<!--插入用户,对象中对属性可以直接取出来-->
<insert id="addUser" parametertype"com.wu.pojo.User">
insert into user(id,name,pwd) values(#{id},#{name},#{pwd})
</insert>
</mapper>
例3:修改用户
Mapper接口中添加方法
public interface UserMapper {
//查询全部用户
List<User> getUserList();
//根据id查询用户
User getUserById(int id);
//添加用户
int addUser(User user);
//修改用户
int updateUser(User user);
}在UserMapper.xml中添加Select语句
<mapper namespace="mapper.UserMapper">
<!-- 查询语句 -->
<!-- 里面的id对应上面接口的方法名 -->
<select id="getUserList" resultType="com.wu.pojo.User">
select * from user
</select>
<!--根据id查询用户,用'#'取方法参数-->
<select id="getUserById" parameterType="int" resultType="com.wu.pojo.User">
select * from User whele id = #{id}
</select>
<!--插入用户,对象中对属性可以直接取出来-->
<insert id="addUser" parametertype"com.wu.pojo.User">
insert into user(id,name,pwd) values(#{id},#{name},#{pwd})
</insert>
<!--更新用户-->
<update id="updateUser" parameterType="com.wu.pojo.User">
update user set name=#{name},pwd =#{pwd} where id=#{id}
</update>
</mapper>
例4:删除用户
Mapper接口中添加方法
public interface UserMapper {
//查询全部用户
List<User> getUserList();
//根据id查询用户
User getUserById(int id);
//添加用户
int addUser(User user);
//修改用户
int updateUser(User user);
//删除用户
int deleteUser(int id);
}在UserMapper.xml中添加Select语句
<mapper namespace="mapper.UserMapper">
<!-- 查询语句 -->
<!-- 里面的id对应上面接口的方法名 -->
<select id="getUserList" resultType="com.wu.pojo.User">
select * from user
</select>
<!--根据id查询用户,用'#'取方法参数-->
<select id="getUserById" parameterType="int" resultType="com.wu.pojo.User">
select * from User whele id = #{id}
</select>
<!--插入用户,对象中对属性可以直接取出来-->
<insert id="addUser" parametertype"com.wu.pojo.User">
insert into user(id,name,pwd) values(#{id},#{name},#{pwd})
</insert>
<!--更新用户-->
<update id="updateUser" parameterType="com.wu.pojo.User">
update user set name=#{name},pwd =#{pwd} where id=#{id}
</update>
<!--删除用户-->
<delete id="deleteUser" parameterType="int">
delete from user where id =#{id}
</delete>
</mapper>
3. 万能map
实体类,或数据库中的表,字段或参数过多,考虑使用Map。
- 在 UserMapper 添加接口方法
User getUserById2(Map<String,Object> map); |
在UserMapper.xml中添加该方法的语句
<!--这个后面的参数对应map的key,名字可以自己随便取,不要求和实体类一一对应-->
<select id="getUserById2" parameterType="map" resultType="com.wu.pojo.User">
select * from user where id = #{userid} and name =#{username}
</select>测试类中测试
public void getUserById2() {
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
Map<String, Object> map = new HashMap<String, Object>();
map.put("userid", 1);
map.put("username", "张三");
User user = mapper.getUserById2(map);
System.out.println(user);
sqlSession.close();
}Map传递参数,直接在sql中取出key即可! 【parameter=“map”】
对象传递参数,直接在sql中取出对象的属性即可! 【parameter=“Object”】
只有一个基本类型参数的情况下,可以直接在sql中取到
多个参数用Map , 或者注解!
4. 模糊查询
在 UserMapper 添加接口方法
List<User> getUserLike(String value);
在UserMapper.xml中添加该方法的语句
<!--也可以用concat拼接-->
<select id="getUserList2" resultType="com.wu.pojo.User">
select * from user where name like "%"#{value}"%"
</select>
------ 本文结束感谢您的阅读 ------