1.update修改
uodate修改也可以使用之前的机制在配置文件中直接编写sql
但是update语句的set字句中是根据传入的值决定的,
此时可以通过Mybatis提供的标签实现判断动态拼接update语句:
<!-- update修改 --> <update id="updateOne"> update user <set> <if test="name != null">name = #{name},</if> <if test="age != 0">age = #{age},</if> </set> where id = #{id} </update>
测试类:
// 根据配置文件创建sqlSessionFactory private SqlSessionFactory factory = null; @Before public void before() throws Exception{ //1.读取MyBatis核心配置文件 InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml"); //2.根据配置文件创建sqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in); } /** * update操作 */ @Test public void test07(){ User user = new User(); user.setId(3); user.setName("sss"); user.setAge(12); // 1.创建sqlSession SqlSession session = factory.openSession(); // 2.执行操作 session.update("cn.tedu.mybatis.beans.UserMapper.updateOne",user); // 3.提交事务 session.commit(); }
2.select查询
select查询也可以使用之前的机制在配置文件中直接编写sql
但是select语句的where字句中拼接哪些查询字段是根据传入的值决定的
此时可以通过MyBatis提供的标签实现判断,动态拼接select语句:
<!-- select查询 --> <select id="queryMany" resultType="cn.tedu.mybatis.beans.User"> select * from user <where> <if test="id != 0">id = #{id}</if> <if test="name != null">and name = #{name}</if> <if test="age != 0">and age = #{age}</if> </where> </select>
测试类:
// 根据配置文件创建sqlSessionFactory private SqlSessionFactory factory = null; @Before public void before() throws Exception{ //1.读取MyBatis核心配置文件 InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml"); //2.根据配置文件创建sqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in); } /** * select操作 */ @Test public void test08(){ User user = new User(); user.setId(3); user.setName("sss"); user.setAge(12); // 1.创建sqlSession SqlSession session = factory.openSession(); // 2.执行操作 User userx = session.selectOne("cn.tedu.mybatis.beans.UserMapper.queryMany",user); // 3.遍历结果 System.out.println(userx); } // 根据配置文件创建sqlSessionFactory private SqlSessionFactory factory = null; @Before public void before() throws Exception{ //1.读取MyBatis核心配置文件 InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml"); //2.根据配置文件创建sqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in); } /** * select操作 */ @Test public void test08(){ User user = new User(); user.setId(3); user.setName("sss"); user.setAge(12); // 1.创建sqlSession SqlSession session = factory.openSession(); // 2.执行操作 User userx = session.selectOne("cn.tedu.mybatis.beans.UserMapper.queryMany",user); // 3.遍历结果 System.out.println(userx); }
3.insert操作
insert插入也可以使用之前的机制在配置文件中直接编写sql
但是insert语句的参数和值的列表拼接哪些字段是根据差u纳入的值决定的
此时可以通过MyBatis提供的标签实现判断,动态拼接insert语句:
<!-- insert操作 --> <insert id="insertOne"> insert into user <trim prefix="(" suffix=")" suffixOverrides=","> id, <if test="name != null">name,</if> <if test="age != 0">age,</if> </trim> values <trim prefix="(" suffix=")" suffixOverrides=","> id, <if test="name != null">#{name},</if> <if test="age !=0">#{age},</if> </trim> <!-- insert into user (id,name,age) values (null,#{name},#{age}) --> </insert>
trim:去掉字符串两端的多余的空格
测试类:
// 根据配置文件创建sqlSessionFactory private SqlSessionFactory factory = null; @Before public void before() throws Exception{ //1.读取MyBatis核心配置文件 InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml"); //2.根据配置文件创建sqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in); } /** * insert操作 */ @Test public void test09(){ User user = new User(); user.setName("hhh"); user.setAge(33); // 1.创建SqlSession SqlSession session = factory.openSession(); // 2.执行操作 session.insert("cn.tedu.mybatis.beans.UserMapper.insertOne",user); // 3.提交事务 session.commit(); }
4.delet操作
delete删除也可以使用之前的机制在配置文件中直接编写sql
但是delete语句的删除条件、拼接哪些字段,是根据传入的值决定的
此时可以通过MyBatis提供的标签实现判断,动态拼接delete语句:
<!-- delete 操作 --> <delete id="deleteOne"> delete from user <where> <if test="id != 0">id = #{id}</if> <if test="name != null">and name = #{name}</if> <if test="age != 0">and age = #{age}</if> </where> </delete>
<!-- delete 操作2 --> <delete id="deleteOne2"> delete from user where id in <foreach collection="list" open="(" close=")" separator="," item="id"> #{id} </foreach> </delete>
测试类:
// 根据配置文件创建sqlSessionFactory private SqlSessionFactory factory = null; @Before public void before() throws Exception{ //1.读取MyBatis核心配置文件 InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml"); //2.根据配置文件创建sqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in); } /** * delete操作 */ @Test public void test10(){ User user = new User(); user.setId(8); // user.setName("cjj"); user.setAge(24); // 1.创建SqlSession SqlSession session = factory.openSession(); // 2.执行操作 session.insert("cn.tedu.mybatis.beans.UserMapper.deleteOne",user); // 3.提交事务 session.commit(); } /** * delete操作2 */ @Test public void test11(){ // 0.准备数据 List<Integer> list = new ArrayList<Integer>(); list.add(3); list.add(6); list.add(10); // 1.创建SqlSession SqlSession session = factory.openSession(); // 2.执行操作 session.insert("cn.tedu.mybatis.beans.UserMapper.deleteOne2",list); // 3.提交事务 session.commit(); }