Mybatis沙雕入门---2 CRUD

昨天已经学习了一个简单的Mybatis的项目,今天我们来书写一个完整的增删改查的jdbc链接方式

Mybatis基础方式CRUD:

mybatis约定:
 输入参数parameterType和输出参数resultType,在形式上都只能有一个
输入参数parameterType:
 如果是简单类型(8个基本类型+String)是可以使用任何占位符,#{xxxx}
 如果是对象类型,则必须是对象的属性#{属性名}
输出参数resultType:
 如果返回值类型是一个对象(如Student),则无卵返回一个还是多个,在resultType都写成whpu.entity.Student即: resultType=“whpu.entity.Student”

注意事项:
 如果使用的事务方式为JDBC,则需要手工commit提交,即执行sqlSession.commit();
所有的标签如< select >< update >等,都需要有sql语句,但是sql参数值可选
 select * from student where stuNo=#{xxx}
 sql有参数:session.insert(statement,参数值)
 sql没有参数:session.insert(statement)

项目代码:

项目结构:
项目结构和昨天差不多
在这里插入图片描述
Student.java

package whpu.entity;
public class Student {
    private int stuNo;
    private String stuName;
    private int age;
    public Student() {
    }
    public Student(int stuNo, String stuName, int age) {
        this.stuNo = stuNo;
        this.stuName = stuName;
        this.age = age;
    }
    public int getStuNo() {
        return stuNo;
    }
    public void setStuNo(int stuNo) {
        this.stuNo = stuNo;
    }
    public String getStuName() {
        return stuName;
    }
    public void setStuName(String stuName) {
        this.stuName = stuName;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String toString() {
        return stuNo+","+stuName+","+age;
    }
}

Test.java

import whpu.entity.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;
import java.util.List;

public class Test {
    public static void queryStudentByNo(){
        try {
            Reader reader=Resources.getResourceAsReader( "conf.xml" );
            SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build( reader );
            SqlSession sqlSession=sessionFactory.openSession();
            String statement="whpu.entity.StudentMapper.queryStudentByNo";
            Student student=sqlSession.selectOne( statement,1 );
            System.out.println( student.toString() );
            sqlSession.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static void addStudent(){
        try {
            Reader reader=Resources.getResourceAsReader( "conf.xml" );
            SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build( reader );
            SqlSession sqlSession=sessionFactory.openSession();
            String statement="whpu.entity.StudentMapper.addStudent";
            Student student=new Student( 4,"zl",6 );
            int count=sqlSession.insert( statement,student );
            System.out.println( "增加个数"+count );
            sqlSession.commit();
            sqlSession.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }public static void updatestudent(){
        try {
            Reader reader=Resources.getResourceAsReader( "conf.xml" );
            SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build( reader );
            SqlSession sqlSession=sessionFactory.openSession();
            String statement="whpu.entity.StudentMapper.updateStudent";
            Student student=new Student(1,"zss",12);
            int count=sqlSession.update( statement,student );
            System.out.println( "修改个数:"+count );
            sqlSession.commit();
            sqlSession.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }public static void deleteStudentByStuNo(){
        try {
            Reader reader=Resources.getResourceAsReader( "conf.xml" );
            SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build( reader );
            SqlSession sqlSession=sessionFactory.openSession();
            String statement="whpu.entity.StudentMapper.deleteStudentByStuNo";
            int count=sqlSession.delete( statement,4 );
            System.out.println( "删除个数为:"+count );
            sqlSession.commit();
            sqlSession.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static void queryAllStudents(){
        try {
            Reader reader=Resources.getResourceAsReader( "conf.xml" );
            SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build( reader );
            SqlSession sqlSession=sessionFactory.openSession();
            String statement="whpu.entity.StudentMapper.queryAllStudents";
            List<Student> students=sqlSession.selectList( statement );
            for(Student student:students){
                System.out.println( student.toString() );
            }
            sqlSession.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args){
//        queryStudentByNo();
//        addStudent();
//        deleteStudentByStuNo();
        updatestudent();
        queryAllStudents();
    }
}

conf.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>
    <environments default="development">
        <environment id="development">
            <!--事务提交方式:
                JDBC:利用JDBC方式处理事务(commit  rollback   close)
                MANAGED:将事务交由其他组件去托管(spring,jobss),默认会关闭连接
                    取消默认关闭:
                    <transactionManager type="JDBC"/>
                    <property name="closeConnection" value="false"/>
            -->
            <transactionManager type="JDBC"/>
            <!--数据源类型:
                POOLED:使用数据库连接池
                UNPOOLED:使用传统的JDBC模式(每次访问数据库都需要打开和关闭)
                JNDI:tomcat中获取内置的数据库连接池(数据库连接池-数据源)
            -->
            <dataSource type="POOLED">
                <!--配置数据库信息-->
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/student?serverTimezone=UTC"/>
                <property name="username" value="yucan"/>
                <property name="password" value="1234"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!--加载映射文件-->
        <mapper resource="whpu/entity/StudentMapper.xml"/>
    </mappers>
</configuration>

StudentMapper.xml

<?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文件的唯一标识符-->
<mapper namespace="whpu.entity.StudentMapper">
    <!--输入类型是int,返回是Student-->
    <select id="queryStudentByNo" resultType="whpu.entity.Student" parameterType="int">
      select * from student where stuNo = #{id}
    </select>
    <insert id="addStudent" parameterType="whpu.entity.Student" >
        insert into student (stuNo,stuName,age) values(#{stuNo},#{stuName},#{age})
    </insert>
    <update id="updateStudent" parameterType="whpu.entity.Student">
        update student set stuName=#{stuName},age=#{age} where stuNo=#{stuNo}
    </update>
    <delete id="deleteStudentByStuNo" parameterType="int">
        delete from student where stuNo=#{stuNo}
    </delete>
    <select id="queryAllStudents" resultType="whpu.entity.Student">
      select * from student
    </select>
</mapper>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值