Mybatis基本操作
1.增删改查
实体类:user
public class User {
private int id;
private String name;
private Dept dept;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Dept getDept() {
return dept;
}
public void setDept(Dept dept) {
this.dept = dept;
}
}
Dept
public class Dept {
private int id;
private String name;
private List<User> users;
public List<User> getUsers() {
return users;
}
public void setUsers(List<User> users) {
this.users = users;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
映射文件:
UserMapper:
<?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">
<mapper namespace = "com.fuwenjun.dao.UserMapper">
<!--
1: id:表示一个sql句柄(相当于在jdbc的statement对象)
2: paremeterType :输入参数的类型 ,在sql语句中,通过占位符#{}来接收此参数
3:resultType: sql操作返回的结果类型
-->
<resultMap type="com.fuwenjun.entity.User" id="userMap">
<id property="id" column="id" />
<result property="name" column="name"/>
<association property="dept" resultMap="com.fuwenjun.dao.DeptMapper.deptMap">
<id property="id" column="id" />
<result property="name" column="deptname"/> <!--注意如果dept中name与user中name一致 那么查出来的dept的name将会变成user的name,
所以需要将的dept表中相同的字段的名修改名称如:dept中id为deptid需要与user中id字段不同-->
</association>
</resultMap>
<select id = "getUserById" parameterType = "int"
resultMap = "userMap" >
SELECT u.id,u.name,d.deptid,d.deptname
FROM USER u , dept d
WHERE u.deptId=d.deptid AND u.id= #{ id }
</select>
<!--查询所有用户信息 :有问题.... -->
<select id = "getUserList" resultMap="userMap">
select *
from user
</select>
<!-- 保存用户 -->
<insert id="save" >
insert into user(id,name,deptId) values(#{id},#{name},#{dept.id})
</insert>
<update id="update">
UPDATE USER SET NAME=#{ name },deptId=#{ dept.id } WHERE id=#{ id }
</update>
<delete id="delete">
DELETE FROM USER WHERE id = #{ id }
</delete>
</mapper>
DeptMapper:
<?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">
<mapper namespace = "com.fuwenjun.dao.DeptMapper">
<!--
1: id:表示一个sql句柄(相当于在jdbc的statement对象)
2: paremeterType :输入参数的类型 ,在sql语句中,通过占位符#{}来接收此参数
3:resultType: sql操作返回的结果类型
-->
<resultMap type="com.fuwenjun.entity.Dept" id="deptMap">
<id property="id" column="deptid" />
<result property="name" column="deptname"/>
<collection property="users" resultMap="com.fuwenjun.dao.UserMapper.userMap">
<id property="id" column="id" />
<result property="name" column="name"/>
</collection>
</resultMap>
<select id = "getDeptById" parameterType = "int"
resultMap = "deptMap" >
select id,deptname
from dept
where id=#{ 0 }
</select>
<select id="getAllDept" resultMap="deptMap">
select deptid,deptName from dept
</select>
<select id="getUserByDept" resultMap="com.fuwenjun.dao.UserMapper.userMap">
SELECT u.id,u.name
FROM dept d,USER u
WHERE d.deptid=u.deptid AND d.deptid=#{ id }
</select>
</mapper>
使用Mapper代理进行数据库操作
例:Mapper接口
UserMapper:
import java.util.List;
import com.fuwenjun.entity.User;
public interface UserMapper {
public User getUserById(int id);
public List<User> getUserList();
public void save(User u);
public void update(User u);
public void delete(int id);
}
service 业务逻辑层表现:
import com.fuwenjun.dao.UserMapper;
import com.fuwenjun.entity.User;
public class UserService {
private UserMapper userMapper;
public void setUserMapper(UserMapper userMapper) {
this.userMapper = userMapper;
}
public User findById(int Id){
return userMapper.getUserById(Id);
}
public void save(User u){
userMapper.save(u);
}
public void update(User u){
userMapper.update(u);
}
public void delete(int id){
userMapper.delete(id);
}
}