一.基于MybatisUtil工具类完成CURD操作
最主要的StudentMapper.xml的配置以及参数说明
<?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">
<!-- 普通的增删改查 -->
<!-- namespace属性是名称空间 必须唯一s\ -->
<mapper namespace="studentNameSpace">
<!-- 当实体属性和表字段名不相同的时候, 必须书写以下代码
-->
<resultMap type="bean2.Student" id="studentMap">
<id property="id" column="id"/>
<result property="name" column="name" />
<result property="sal" column="sal" />
</resultMap>
<!-- 增加学生
如果参数不是一个实体,只是一个普通变量列如 int double String 这里的#{变量名可以随便写}
-->
<insert id="add" parameterType="bean2.Student">
INSERT INTO student(id,name,sal) values(#{id},#{name},#{sal})
</insert>
<!-- 根据id查询学生
resultMap属性的值 为studentMap 返回的结果的值将和resultMap 对应 column 对应propety
-->
<select id="queryById" parameterType="int" resultType="bean2.Student">
SELECT id,name,sal FROM student WHERE id = #{id}
</select>
<!-- 查询所有学生 返回类型理论上写List(Student) 但是这里只需要些List中的类型即可-->
<select id="queryAllStudent" resultType="bean2.Student">
SELECT id,name,sal FROM student
</select>
<!-- 更新学生 -->
<update id="update" parameterType="bean2.Student" > <!-- update没有resultType属性 -->
UPDATE student set name = #{name},sal = #{sal} WHERE id = #{id}
</update>
<!-- 删除学生 -->
<delete id="delete" parameterType="bean2.Student" > <!-- delete没有resultType属性 -->
DELETE FROM student where id = #{id}
</delete>
<!-- <insert id="delete" parameterType="bean2.Student"> 这样也可以删除成功
DELETE FROM student where id = #{id}
</insert>-->
<!-- 这个insert/update/delete 标签只是一个模板 在做操作时候,其实是以sql语句为中心的
即在做增删改时候,insert/update/delete可以通用
但做查询时候只能用select标签
但提倡操作什么就用什么标签 规范
-->
</mapper>
二.mybatis分页查询
<?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">
<!-- 分页。。。。。。。。。 -->
<!-- namespace属性是名称空间 必须唯一s\ -->
<mapper namespace="studentNameSpace">
<!-- 当实体属性和表字段名不相同的时候, 必须书写以下代码
-->
<resultMap type="bean3.Student" id="studentMap">
<id property="id" column="id"/>
<result property="name" column="name" />
<result property="sal" column="sal" />
</resultMap>
<!-- 普通的分页-->
<select id="queryAllWithPage" parameterType="map" resultType="bean3.Student" >
select id,name,sal from student limit #{pbegin},#{plength}
</select>
<!--根据名字的分页 -->
<select id="queryAllByNameWithPage" parameterType="map" resultType="bean3.Student" >
select id,name,sal from student where name like #{pname} limit #{pbegin},#{plength}
</select>
</mapper>
StudentDao代码:
/**
* 分页查询
* @param begin 表示在mysql中表示从第几条记录的索引号开始 索引从0开始
* @param length 表示在mysql中最多显示 几条记录
* @return
*/
public List<Student> queryAllWithPage(int begin,int length){
SqlSession sqlSession = null;
try {
sqlSession = MybatisUtil.getSqlSession();
Map<String, Object> map = new LinkedHashMap<String, Object>();
map.put("pbegin", begin);
map.put("plength", length);
return sqlSession.selectList("studentNameSpace.queryAllWithPage", map);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally {
MybatisUtil.closeSqlsession();
}
return null;
}
* 分页查询
* @param begin 表示在mysql中表示从第几条记录的索引号开始 索引从0开始
* @param length 表示在mysql中最多显示 几条记录
* @param name name 表示分页查询的name属性
* @return
*/
public List<Student> queryAllByNameWithPage(String name,int begin,int length){
SqlSession sqlSession = null;
try {
sqlSession = MybatisUtil.getSqlSession();
Map<String, Object> map = new LinkedHashMap<>();
map.put("pname", "%"+name+"%");
map.put("pbegin",begin );
map.put("plength",length );
return sqlSession.selectList("studentNameSpace.queryAllByNameWithPage", map);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally {
MybatisUtil.closeSqlsession();
}
return null;
}