有接口 删除操作
根据学号删除一条学生信息
1. 在StudentDAO中定义删除方法
StudentDAO.java
2. 在StudentMapper.xml中对接口方法进行“实现”
StudentMapper.xml
3. 测试:在StudentDAO的测试类中添加测试方法
StudentDAOTest.java
修改操作
根据学生学号,修改其他字段信息
1. 在StudentDAO接口中定义修改方法
StudentDAO.java
2. 在StudentMapper.xml中“实现”接口中定义的修改方法
StudentMapper.xml
3. 单元测试
StudentDAOTest.java
查询操作 查询所有 1. 在StudentDAO接口定义操作方法
StudentDAO.java
2. 在StudentMapper.xml中“实现”DAO中定义的方法
StudentMapper.xml
3. 单元测试
StudentDAOTest.java
查询一条记录
根据学号查询一个学生信息。
1. 在StudentDAO接口中定义方法
StudentDAO.java
2. 在StudentDAOMapper.xml中配置StudentDAO接口的方法实现——SQL
StudentDAOMapper.xml
3. 单元测试
StudentDAOTest.java
多参数查询
分页查询(参数 start , pageSize)。
1. 在StudentDAO中定义操作方法,如果方法有多个参数,使用 @Param
注解声明参数的别名
也可以只用 map 作为一个参数,在 map 里放 start 和 pageSize两个值。
StudentDAO.java
2. 在StudentMapper.xml配置sql时,使用 #{别名}
获取到指定的参数
StudentMapper.xml
如果DAO接口方法没有通过 @Param 指定参数别名,在SQL中也可以通过 arg0,arg1...
或者 param1,param2,...
获取参数。
查询总记录数 1. 在StudentDAO接口中定义操作方法
StudentDAO.java
2. 在StudentMapper.xml配置sql,通过resultType指定当前操作的返回类型为int
添加操作回填生成的主键 StduentMapper.xml 的添加操作标签——insert
1 2 3 4 5 6 7 <insert id ="insertStudent" useGeneratedKeys ="true" keyProperty ="stuId" > insert into tb_students(stu_num, stu_name, stu_gender, stu_age) values (#{stuNum}, #{stuName}, #{stuGender}, #{stuAge})</insert >
六 无接口 MyBatis的插入数据操作 1. 编写UserMapper映射文件 1 2 3 4 5 6 7 8 <mapper namespace ="userMapper" > <insert id ="save" parameterType ="cc.gaojie.domain.User" > insert into user values (#{id}, #{username}, #{password}) </insert > </mapper >
2. 编写插入实体User的代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 @Test public void test2 () throws IOException { User user = new User(); user.setUsername("lisa" ); user.setPassword("abc" ); InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml" ); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream); SqlSession sqlSession = sqlSessionFactory.openSession(); sqlSession.insert("userMapper.save" ,user); sqlSession.commit(); sqlSession.close(); }
插入操作要注意的问题
插入语句使用insert标签
在映射文件中使用 parameterType 属性指定要插入的数据类型
Sql 语句中使用 #{实体属性名}
方式引用实体中的属性值
插入操作使用的 API 是 sqlSession.insert( “命名空间.id” , 实体对象)
;
插入操作涉及数据库数据变化,所以要使用 sqlSession 对象显示的提交事务 ,即 sqlSession.commit()
MyBatis的修改数据操作 1. 编写UserMapper映射文件 1 2 3 4 5 6 7 8 9 10 11 <mapper namespace ="userMapper" > <update id ="modify" parameterType ="cc.gaojie.domain.User" > update user set username=#{username}, password=#{password} where id = #{id} </update > </mapper >
2. 编写修改实体User的代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 @Test public void test3 () throws IOException { User user = new User(); user.setId(57 ); user.setUsername("gaojie" ); user.setPassword("cc" ); InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml" ); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream); SqlSession sqlSession = sqlSessionFactory.openSession(); sqlSession.update("userMapper.modify" ,user); sqlSession.commit(); sqlSession.close(); }
修改操作注意问题
修改语句使用 update 标签
修改操作使用的API是 sqlSession.update( “命名空间.id” , 实体对象)
;
修改操作涉及数据库数据变化,所以要使用 sqlSession 对象显示的提交事务 ,即 sqlSession.commit()
MyBatis的删除数据操作 1. 编写UserMapper映射文件 1 2 3 4 5 6 7 8 <mapper namespace ="userMapper" > <delete id ="delete" parameterType ="java.lang.Integer" > delete from user where id=#{id} </delete > </mapper >
2. 编写删除数据的代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 @Test public void test4 () throws IOException { InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml" ); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream); SqlSession sqlSession = sqlSessionFactory.openSession(); sqlSession.delete("userMapper.delete" ,56 ); sqlSession.commit(); sqlSession.close(); }
删除操作要注意问题
删除语句使用delete标签
Sql语句中使用 #{任意字符串}
方式引用传递的单个参数
删除操作使用的API是 sqlSession.delete( “命名空间.id” , Object)
;
删除操作涉及数据库数据变化,所以要使用 sqlSession 对象显示的提交事务 ,即 sqlSession.commit()
MyBatis的条件查询操作 1. 编写UserMapper映射文件 1 2 3 4 5 6 7 8 <mapper namespace ="userMapper" > <select id ="selectByName" resultType ="cc.gaojie.domain.User" parameterType ="java.lang.String" > select * from user where username = #{name} </delete > </mapper >
2. 编写删除数据的代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 @Test public void test5 () throws IOException { InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml" ); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream); SqlSession sqlSession = sqlSessionFactory.openSession(); List<Object> gaojie = sqlSession.selectList("userMapper.selectByName" , "gaojie" ); System.out.println(gaojie); sqlSession.close(); }
知识小结