demo依旧是前2个的demo,同样的实体类和数据库表.只是在接口中和对应的映射文件中添加了相应的删除和添加方法
接口的方法:
package test.batics.service; import java.util.List; import org.apache.ibatis.session.RowBounds; import test.batics.entity.User; public interface UserMapper { //通过id查询 User findById(Long id); //查询全部 List<User> findAll(); //分页查询 List<User> findPage(RowBounds bounds); //修改操作 int updateById(User user); //添加操作 int addUser(User user); //通过id删除操作 int deleteUser(Long id); }
映射文件:
<?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="test.batics.service.UserMapper"> <select id="findById" parameterType="java.lang.Long" resultType="User"> select * from t_user where id = #{value} </select> <select id="findAll" resultType="User"> select * from t_user </select> <select id= "findPage" resultType="User"> select * from t_user </select> <update id="updateById" parameterType="User"> update t_user <set> <if test="email != null and email !=''"> email = #{email,jdbcType=VARCHAR} </if> <if test="name !=null and name != ''"> name = #{name,jdbcType=VARCHAR} </if> </set> where id = #{id} </update> <insert id="addUser" parameterType="User"> <!-- 通过序列来作为id --> <selectKey keyProperty="id" resultType="java.lang.Long" order="BEFORE"> select seq_user_id.NEXTVAL AS VALUE FROM DUAL </selectKey> insert into t_user (id,email,login_name,name) values( #{id}, #{email}, #{loginName}, #{name} ) </insert> <!-- 通过Id删除 --> <delete id="deleteUser" parameterType="java.lang.Long"> delete from t_user where id = #{value} </delete> </mapper>
测试类:
package test.batics.demo; import java.util.List; import org.apache.ibatis.session.RowBounds; import org.apache.ibatis.session.SqlSession; import test.batics.entity.User; import test.batics.service.UserMapper; import test.batics.util.BatisUtil; public class RunDemo { static final String NAME_SPACE = "test.batics.service.UserMapper"; /** * @param args */ public static void main(String[] args) { SqlSession session = BatisUtil.getSession(); RowBounds bounds = new RowBounds(3, 2); List<User> users = null; /** * 分页的第一种方法 */ /*users = searchPager1(session, bounds); print(users);*/ /** * 分页的第二种方法 */ /*users = searchPager2(session, bounds); print(users);*/ /** * 修改操作 * 1.通过id查询出当前 用户 * 2.在修改此用户信息 */ /*update(session);*/ /** * 添加操作,这里 通过序列添加其id */ /*add(session);*/ /** * 删除操作 */ deleteUser(session); } //打印得到的值 public static void print(List<User> users){ for (User user : users) { System.out.println("email=" + user.getEmail() + "\t" + "loginName=" + user.getLoginName() + "\t" + "name=" + user.getName() + "\t" + "password=" + user.getPassword() + "\t" + "id=" + user.getId()); } } //分页的第一种方式 public static List<User> searchPager1(SqlSession session,RowBounds bounds){ List<User> users = session.selectList(NAME_SPACE+".findAll", "", bounds); return users; } //分页的第二种方式,在接口方法中加上bounds参数 public static List<User> searchPager2(SqlSession session,RowBounds bounds){ UserMapper mapper = session.getMapper(UserMapper.class); List<User> users = mapper.findPage(bounds); return users; } //修改操作 public static void update(SqlSession session){ UserMapper mapper = session.getMapper(UserMapper.class); User user = mapper.findById(2061L); user.setName("肥猫钓鱼"); int result = mapper.updateById(user); if(result>0){ System.out.println("修改成功"); } //然后提交 关闭session session.commit(); session.close(); } //添加操作 public static void add(SqlSession session){ UserMapper mapper = session.getMapper(UserMapper.class); User user = new User(); user.setEmail("[email protected]"); user.setLoginName("testBatis"); user.setName("testBatis"); user.setPassword("test123"); int result = mapper.addUser(user); if(result>0){ System.out.println("添加成功"); } session.commit(); session.close(); } //删除操作 public static void deleteUser(SqlSession session){ UserMapper mapper = session.getMapper(UserMapper.class); Long id = 2104L; int result = mapper.deleteUser(id); if(result>0){ System.out.println("删除成功"); } session.commit(); session.close(); } }
结果如下:
代码已上传,jar包的下载地址在第一个demo1中有说明,我就不再贴上了