MyBits--Statement方式的增删改查

根据ID查询
  1. 新建一张Student数据表

    DROP TABLE IF EXISTS student;
    create table student(
        sid         INT    AUTO_INCREMENT,
        name        VARCHAR(50),
        age         INT,
        graname     VARCHAR(50),
        CONSTRAINT pk_sid PRIMARY KEY(sid)
    );
    INSERT INTO student(name,age,graname) VALUES ('hani',13,'five');    
    
  2. 新建Student类,注意类中的属性名称应与数据表中字段的名称相同。

    import java.io.Serializable;
    
    @SuppressWarnings("serial")
    public class Student implements Serializable {
        private Integer sid;
        private String name;
        private Integer age;
        private String graname;
        //方法略
    }
    
  3. 创建映射表,名称为StudentMapper.xml,并在conf文件中引入。

    <?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:映射文件的路径-->
    <?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:该mapper.xml映射文件的唯一标识-->
    <mapper namespace="com.gub.vo.PersonMapper">
        <!--
            id:语句ID
            resultType:返回值类型
            parameterType:输入参数类型
        -->
        <select id="queryStudentById" resultType="com.gub.vo.Student" parameterType="int">
            SELECT * FROM Student WHERE sid = #{sid}
        </select>
    </mapper>
    

    在conf.xml文件的mappers子标签中加入mapper标签并在其resource属性上填写StudentMapper.xml文件路径:

    	<?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE configuration
            PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
        <!--
            根据default的值判断MyBits用的是哪种环境,
            即当前数据库环境由 environments.default 和 environment.id来决定
            在java代码中可以通过:
                new SqlSessionFactoryBuilder().build(reader,"development");
            来指定使用哪种环境
        -->
        <environments default="development">
            <!--开发环境(个人计算机)-->
            <environment id="development">
                <!--
                    配置事务的提交方式:JDBC:利用JDBC方式处理事务
                                      MANAGED:将事务交由其他组件去托管(默认会关闭连接)
                -->
                <transactionManager type="JDBC"/>
                <!--
                    数据源类型:UNPOOLED:传统的JDBC模式
                               POOLED:使用数据库连接池(三方连接池)
                               JNDI:从Tomcat中获取内置的数据源(自带的数据库连接池)
                -->
                <dataSource type="POOLED">
                    <!--配置数据库连接信息-->
                    <property name="driver" value="com.mysql.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql://localhost:3306/mybits?characterEncoding=utf-8"/>
                    <property name="username" value="root"/>
                    <property name="password" value="root"/>
                </dataSource>
            </environment>
    
            <!--真正项目运行时的环境-->
            <environment id="test">
                <transactionManager type="JDBC"/>
                <!--配置数据库信息-->
                <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql://10.10.71.69:3306/mybits?characterEncoding=utf-8"/>
                    <property name="username" value="admin"/>
                    <property name="password" value="123456"/>
                </dataSource>
            </environment>
        </environments>
        <mappers>
            <!--加载映射文件-->
            <mapper resource="com/gub/vo/PersonMapper.xml"/>
            <mapper resource="com/gub/vo/StudentMapper.xml"/>
        </mappers>
    </configuration>
    
  4. 新建测试类TestStudent,测试程序

    import com.gub.vo.Student;
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    
    import java.io.IOException;
    import java.io.Reader;
    
    public class TestStudent {
        public static void main(String[] args) throws IOException {
            Reader reader = Resources.getResourceAsReader("conf.xml");
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader,"development");
            SqlSession sqlSession = sqlSessionFactory.openSession();
            Student student = sqlSession.selectOne("com.gub.vo.PersonMapper.queryStudentById",1);
            System.out.println(student);
            sqlSession.close();
        }
    }
    

执行程序发现数据查询成功:

增加、修改、删除、查询全部数据

MyBits约定,输入参数:parameterType和输出参数:resultType都只能有一个,如果输入/输出类型是简单类型(8个基本类型+String)则可以使用任意占位符。如果是对象类型,则必须是对象的属性 #{属性名}。
如果返回值类型是一个对象,则无论是一个还是多个,在resultType都写成对象的类名。

  1. 在StudentMapper.xml文件中的mapper元素下添加如下语句:
        <insert id="insertStudent" parameterType="com.gub.vo.Student" >
            INSERT INTO student (name,age,graname) VALUES (#{name},#{age},#{graname});
        </insert>
    
        <delete id="deleteStudentById" parameterType="int">
            DELETE FROM student WHERE sid=#{sid}
        </delete>
    
        <update id="updateStudentById" parameterType="com.gub.vo.Student" >
            UPDATE student SET name=#{name},age=#{age},graname=#{graname} WHERE sid=#{sid}
        </update>
    
        <select id="querySelectAll" resultType="com.gub.vo.Student">
            SELECT * FROM student
        </select>
    
  2. 查询全部学生
    List<Student> students = sqlSession.selectList("com.gub.vo.PersonMapper.querySelectAll");
    
  3. 增加学生
    Student student = new Student();
    student.setName("Alis");
    student.setAge(22);
    student.setGraname("six");
    sqlSession.insert("com.gub.vo.PersonMapper.insertStudent",student);
    
  4. 修改学生
    Student student = new Student();
    student.setSid(1);
    student.setName("App");
    student.setAge(12);
    student.setGraname("one");
    int count = sqlSession.update("com.gub.vo.PersonMapper.updateStudentById",student);
    sqlSession.commit();
    
  5. 删除学生
    int count = sqlSession.delete("com.gub.vo.PersonMapper.deleteStudentById",3);
    sqlSession.commit();
    

注意:如果使用的事物方式为JDBC,则需要手工提交,即sqlSession.commit()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MyBatis是一个持久层框架,它支持基本的增删改查操作。 下面是使用MyBatis执行增删改查操作的示例: 增加: ``` String statement = "com.example.demo.mapper.UserMapper.addUser"; User user = new User(); user.setName("John"); user.setAge(30); int rows = sqlSession.insert(statement, user); ``` 删除: ``` String statement = "com.example.demo.mapper.UserMapper.deleteUser"; int rows = sqlSession.delete(statement, 1); ``` 修改: ``` String statement = "com.example.demo.mapper.UserMapper.updateUser"; User user = new User(); user.setId(1); user.setName("Jane"); user.setAge(35); int rows = sqlSession.update(statement, user); ``` 查询: ``` String statement = "com.example.demo.mapper.UserMapper.getUserById"; User user = sqlSession.selectOne(statement, 1); ``` 在上述示例中,"com.example.demo.mapper.UserMapper"是用于执行操作的Mapper接口的类名,"addUser"、"deleteUser"、"updateUser"和"getUserById"分别是在Mapper接口中声明的方法名。 ### 回答2: MyBatis 是一个基于 Java 的持久层框架,可以方便地实现数据库的增删改查操作。 首先,我们需要在配置文件中设置数据库的连接信息,包括数据库驱动、URL、用户名和密码等。然后,定义一个映射文件,其中包括了 SQL 语句和相应的参数映射关系。接下来,编写 Java 代码,通过 MyBatis 的 API 来执行 SQL 语句。 对于增加数据操作,我们可以使用 insert 语句。在映射文件中定义 insert 语句,并指定参数映射关系。然后在 Java 代码中通过 sqlSession 的 insert 方法执行 insert 语句。 对于删除数据操作,我们可以使用 delete 语句。在映射文件中定义 delete 语句,并指定参数映射关系。然后在 Java 代码中通过 sqlSession 的 delete 方法执行 delete 语句。 对于修改数据操作,我们可以使用 update 语句。在映射文件中定义 update 语句,并指定参数映射关系。然后在 Java 代码中通过 sqlSession 的 update 方法执行 update 语句。 对于查询数据操作,我们可以使用 select 语句。在映射文件中定义 select 语句,并指定参数映射关系。然后在 Java 代码中通过 sqlSession 的 select 方法执行 select 语句。 总结来说,通过在配置文件中设置数据库连接信息,定义映射文件,以及编写相应的 SQL 语句和参数映射关系,在 Java 代码中可以方便地通过 MyBatis 的 API 执行增、删、改、查等数据库操作。这样可以大大简化了数据访问层的编码工作并提高了开发效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值