博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MyBatis学习总结2
阅读量:4670 次
发布时间:2019-06-09

本文共 10531 字,大约阅读时间需要 35 分钟。

这一篇讲述MyBatis对数据库的CRUD操作,内容不做重复,只做添加:

一、使用MyBatis对表执行CRUD操作——基于XML的实现

在SQL映射文件userMapper.xml中添加

insert into users(name,age) values(#{name},#{age})
delete from users where id=#{id}
update users set name=#{name},age=#{age} where id=#{id}

映射封装类->CRUDByXmlMapper.java

package com.tfj.test;import java.util.List;import org.apache.ibatis.session.SqlSession;import com.tfj.domain.User;import com.tfj.util.MyBatisUtil;public class CRUDByXmlMapper {    public void insert() {        // SqlSession sqlSession = MyBatisUtil.getSqlSession(false);        SqlSession sqlSession = MyBatisUtil.getSqlSession(true);        /**         * 映射sql的标识字符串, com.tfj.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,         * addUser是insert标签的id属性值,通过insert标签的id属性值就可以找到要执行的SQL         */        String statement = "com.tfj.mapping.userMapper.addUser";// 映射sql的标识字符串        User user = new User();        user.setName("AfterInsert");        user.setAge(20);        // 执行插入操作        int retResult = sqlSession.insert(statement, user);        // 手动提交事务        // sqlSession.commit();        // 使用SqlSession执行完SQL之后需要关闭SqlSession        sqlSession.close();        System.out.println(retResult);    }    public void update() {        SqlSession sqlSession = MyBatisUtil.getSqlSession(true);        /**         * 映射sql的标识字符串, com.tfj.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,         * updateUser是update标签的id属性值,通过update标签的id属性值就可以找到要执行的SQL         */        String statement = "com.tfj.mapping.userMapper.updateUserById";// 映射sql的标识字符串        User user = new User();        user.setId(1);        user.setName("AfterUpdate");        user.setAge(25);        // 执行修改操作        int retResult = sqlSession.update(statement, user);        // 使用SqlSession执行完SQL之后需要关闭SqlSession        sqlSession.close();        System.out.println(retResult);    }    public void delete() {        SqlSession sqlSession = MyBatisUtil.getSqlSession(true);        /**         * 映射sql的标识字符串, com.tfj.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,         * deleteUser是delete标签的id属性值,通过delete标签的id属性值就可以找到要执行的SQL         */        String statement = "com.tfj.mapping.userMapper.deleteUserById";// 映射sql的标识字符串        // 执行删除操作        int retResult = sqlSession.delete(statement, 1);        // 使用SqlSession执行完SQL之后需要关闭SqlSession        sqlSession.close();        System.out.println(retResult);    }    public void select() {        SqlSession sqlSession = MyBatisUtil.getSqlSession();        /**         * 映射sql的标识字符串, com.tfj.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,         * getAllUsers是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL         */        String statement = "com.tfj.mapping.userMapper.getUserById";// 映射sql的标识字符串        // 执行查询返回一个唯一user对象的sql        User user = sqlSession.selectOne(statement, 1);        System.out.println(user);    }    public void selectAll() {        SqlSession sqlSession = MyBatisUtil.getSqlSession();        /**         * 映射sql的标识字符串, com.tfj.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,         * getAllUsers是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL         */        String statement = "com.tfj.mapping.userMapper.getAllUsers";// 映射sql的标识字符串        // 执行查询操作,将查询结果自动封装成List
返回 List
lstUsers = sqlSession.selectList(statement); // 使用SqlSession执行完SQL之后需要关闭SqlSession sqlSession.close();      for(User lsts:lstUsers){ System.out.println(lsts); } }}

工具类(后续将一直使用)->MyBatisUtil.java

package com.tfj.util;import java.io.InputStream;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;public class MyBatisUtil {    /**     * 获取SqlSessionFactory     *      * @return SqlSessionFactory     */    public static SqlSessionFactory getSqlSessionFactory() {        String resource = "conf.xml";        InputStream is = MyBatisUtil.class.getClassLoader().getResourceAsStream(resource);        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);        return factory;    }    /**     * 获取SqlSession     *      * @return SqlSession     */    public static SqlSession getSqlSession() {        return getSqlSessionFactory().openSession();    }    /**     * 获取SqlSession     *      * @param isAutoCommit     *            true 表示创建的SqlSession对象在执行完SQL之后会自动提交事务 false     *            表示创建的SqlSession对象在执行完SQL之后不会自动提交事务,这时就需要我们手动调用sqlSession.commit()提交事务     * @return SqlSession     */    public static SqlSession getSqlSession(boolean isAutoCommit) {        return getSqlSessionFactory().openSession(isAutoCommit);    }}

测试类->CRUDTest.java

package com.tfj.test;public class CRUDTest {    public static void main(String[] args) {        // 每次进行操作后都查询全部用户,从而观察变化        CRUDByXmlMapper testCRUDByXmlMapper = new CRUDByXmlMapper();        System.out.println("-------------------------");        System.out.println("Look getAllUsers");        testCRUDByXmlMapper.selectAll();        System.out.println("-------------------------");        System.out.println("Look after updateUser");        testCRUDByXmlMapper.update();        testCRUDByXmlMapper.selectAll();        System.out.println("-------------------------");        System.out.println("Look after delete");        testCRUDByXmlMapper.delete();        testCRUDByXmlMapper.selectAll();        System.out.println("-------------------------");        System.out.println("Look after insert");        testCRUDByXmlMapper.insert();        testCRUDByXmlMapper.selectAll();    }}

 

二、使用MyBatis对表执行CRUD操作——基于注解的实现

1、定义SQL映射的接口

UserMapperI接口的代码如下:

UserMapperI.java

package com.tfj.mapping;import java.util.List;import org.apache.ibatis.annotations.Delete;import org.apache.ibatis.annotations.Insert;import org.apache.ibatis.annotations.Select;import org.apache.ibatis.annotations.Update;import com.tfj.domain.User;/** * @author gacl 定义sql映射的接口,使用注解指明方法要执行的SQL */public interface UserMapperI {    // 使用@Insert注解指明insert方法要执行的SQL    @Insert("insert into users(name, age) values(#{name}, #{age})")    public int insert(User user);    // 使用@Delete注解指明delete方法要执行的SQL    @Delete("delete from users where id=#{id}")    public int delete(int id);    // 使用@Update注解指明update方法要执行的SQL    @Update("update users set name=#{name},age=#{age} where id=#{id}")    public int update(User user);    // 使用@Select注解指明select方法要执行的SQL    @Select("select * from users where id=#{id}")    public User select(int id);    // 使用@Select注解指明selectAll方法要执行的SQL    @Select("select * from users")    public List
selectAll();}

在配置文件conf.xml中添加这个注解接口

映射封装类->CRUDByAnnotationMapper.java

package com.tfj.test;import java.util.List;import org.apache.ibatis.session.SqlSession;import com.tfj.domain.User;import com.tfj.mapping.UserMapperI;import com.tfj.util.MyBatisUtil;public class CRUDByAnnotationMapper {    public void insert() {        SqlSession sqlSession = MyBatisUtil.getSqlSession(true);        // 得到UserMapperI接口的实现类对象,UserMapperI接口的实现类对象由sqlSession.getMapper(UserMapperI.class)动态构建出来        UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);        User user = new User();        user.setName("tufujie");        user.setAge(20);        int add = mapper.insert(user);        // 使用SqlSession执行完SQL之后需要关闭SqlSession        sqlSession.close();        System.out.println(add);    }    public void update() {        SqlSession sqlSession = MyBatisUtil.getSqlSession(true);        // 得到UserMapperI接口的实现类对象,UserMapperI接口的实现类对象由sqlSession.getMapper(UserMapperI.class)动态构建出来        UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);        User user = new User();        user.setId(3);        user.setName("Jacksile");        user.setAge(26);        // 执行修改操作        int retResult = mapper.update(user);        // 使用SqlSession执行完SQL之后需要关闭SqlSession        sqlSession.close();        System.out.println(retResult);    }    public void delete() {        SqlSession sqlSession = MyBatisUtil.getSqlSession(true);        // 得到UserMapperI接口的实现类对象,UserMapperI接口的实现类对象由sqlSession.getMapper(UserMapperI.class)动态构建出来        UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);        // 执行删除操作        int retResult = mapper.delete(1);        // 使用SqlSession执行完SQL之后需要关闭SqlSession        sqlSession.close();        System.out.println(retResult);    }    public void select() {        SqlSession sqlSession = MyBatisUtil.getSqlSession();        // 得到UserMapperI接口的实现类对象,UserMapperI接口的实现类对象由sqlSession.getMapper(UserMapperI.class)动态构建出来        UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);        // 执行查询操作,将查询结果自动封装成User返回        User user = mapper.select(2);        // 使用SqlSession执行完SQL之后需要关闭SqlSession        sqlSession.close();        System.out.println(user);    }    public void selectAll() {        SqlSession sqlSession = MyBatisUtil.getSqlSession();        // 得到UserMapperI接口的实现类对象,UserMapperI接口的实现类对象由sqlSession.getMapper(UserMapperI.class)动态构建出来        UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);        // 执行查询操作,将查询结果自动封装成List
返回 List
lstUsers = mapper.selectAll(); // 使用SqlSession执行完SQL之后需要关闭SqlSession sqlSession.close();      for(User lsts:lstUsers){ System.out.println(lsts); } }}

测试类->CRUDTest2.java

package com.tfj.test;public class CRUDTest2 {    public static void main(String[] args) {        // 每次进行操作后都查询全部用户,从而观察变化        CRUDByAnnotationMapper testCRUDByXmlMapper = new CRUDByAnnotationMapper();        System.out.println("-------------------------");        System.out.println("Look after getUser id=2");        testCRUDByXmlMapper.select();        System.out.println("Look after getAllUsers");        testCRUDByXmlMapper.selectAll();        System.out.println("-------------------------");        System.out.println("Look after updateUser");        testCRUDByXmlMapper.update();        testCRUDByXmlMapper.selectAll();        System.out.println("-------------------------");        System.out.println("Look after delete");        testCRUDByXmlMapper.delete();        testCRUDByXmlMapper.selectAll();        System.out.println("-------------------------");        System.out.println("Look after insert");        testCRUDByXmlMapper.insert();        testCRUDByXmlMapper.selectAll();    }}

 

转载于:https://www.cnblogs.com/tufujie/p/5709382.html

你可能感兴趣的文章
5.6 在线DDL (online DDL)详解
查看>>
电容计算公式
查看>>
MySQL高可用架构故障自动转移插件MHA
查看>>
recv send 阻塞和非阻塞
查看>>
网络丢包分析
查看>>
打印LIS
查看>>
剑指offer第2章学习(2)
查看>>
java后台验证码的生成
查看>>
Bootstrap辅助类
查看>>
vue项目的骨架及常用组件介绍
查看>>
Spring使用外部的配置文件
查看>>
ctype
查看>>
jsp 修饰 Request 及Response
查看>>
HDU 2389 Rain on your Parade / HUST 1164 4 Rain on your Parade(二分图的最大匹配)
查看>>
对象的类型转换P109
查看>>
sqlite 查询表和字段是否存在
查看>>
http => https 升级
查看>>
Window 分布式学习-好文收藏
查看>>
Android TextUtils类介绍
查看>>
linux echo设置颜色
查看>>