mybatis入门之CURD

来源:互联网 发布:软件安装手册 编辑:程序博客网 时间:2024/06/05 14:19

mybatis入门之CURD

1. maven 依赖

<properties>        <mybatis.version>3.3.0</mybatis.version>        <junit.version>4.0</junit.version>        <mysql.version>5.1.40</mysql.version></properties><dependencies> <!-- https://mvnrepository.com/artifact/junit/junit -->        <dependency>            <groupId>junit</groupId>            <artifactId>junit</artifactId>            <version>${junit.version}</version>            <scope>test</scope>        </dependency>        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->        <dependency>            <groupId>org.mybatis</groupId>            <artifactId>mybatis</artifactId>            <version>${mybatis.version}</version>        </dependency>        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->        <dependency>            <groupId>mysql</groupId>            <artifactId>mysql-connector-java</artifactId>            <version>${mysql.version}</version>        </dependency></dependencies>

2. 构建测试的数据库

create table student(    sid int(4) primary key auto_increment,    sname char(50),    age int(3),    gno int(4));

3. 创建jdbc.properties , 把数据库配置信息外置

driver=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/你的数据库名username=你的数据库用户名password=你的密码

4. mybatis配置文件config.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>    <!-- 引入外部jdbc.properties 文件-->    <properties resource="jdbc.properties"></properties>    <environments default="development">        <environment id="development">            <transactionManager type="JDBC"/>            <dataSource type="POOLED">                <property name="driver" value="${driver}"/>                <property name="url" value="${url}"/>                <property name="username" value="${username}"/>                <property name="password" value="${password}"/>            </dataSource>        </environment>    </environments>    <mappers>        <!-- 映射方式1: xml 文件 -->        <mapper resource="com/zhy/Student.xml"/>        <!-- 映射方式2:接口-->        <mapper class="com.zhy.user.dao.StudentMapper"></mapper>    </mappers></configuration>

5. bean实体类

package com.zhy.user.bean;/** * Created by Administrator on 2017/7/20 0020. */public class Student {    private int sid;    private String sname;    private int age;    private int gno;    public int getSid() {        return sid;    }    public void setSid(int sid) {        this.sid = sid;    }    public String getSname() {        return sname;    }    public void setSname(String sname) {        this.sname = sname;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public int getGno() {        return gno;    }    public void setGno(int gno) {        this.gno = gno;    }    public Student() {    }    @Override    public String toString() {        return "Student{" +                "sid=" + sid +                ", sname='" + sname + '\'' +                ", age=" + age +                ", gno=" + gno +                '}';    }}

6. SqlSeesionFactory对象获取。MybatisUtils.java

package com.zhy.test;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.InputStream;/** * Created by Administrator on 2017/7/22 0022. * * Mybatis工具类 */public class MybatisUtils {    public static SqlSessionFactory getSqlSessionFactory(){        String resource = "config.xml";        InputStream inputStream = null;        try{            inputStream = Resources.getResourceAsStream(resource);        }catch (Exception e){            e.printStackTrace();        }        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);        return sqlSessionFactory;    }}

7. xml 映射,映射文件:Student.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 namespace="com.zhy.user.bean.Student">    <!--查询-->    <select id="selectStudent" parameterType="int" resultType="com.zhy.user.bean.Student">        select * from student s where s.sid=#{sid}    </select>    <!--添加-->    <insert id="insertStudent" parameterType="com.zhy.user.bean.Student">      insert into student(sname,age,gno) values (#{sname},#{age},#{gno})    </insert>    <!--删除-->    <delete id="deleteStudent" parameterType="int">        delete from student where sid=#{sid}    </delete>    <!--更新-->    <update id="updateStudent" parameterType="com.zhy.user.bean.Student">        update student set sname=#{sname} where sid=#{sid}    </update></mapper>

8. 通过xml配置对数据库操作, TestMybatisByXml.java

package com.zhy.test;import com.zhy.user.bean.Student;import com.zhy.user.dao.StudentMapper;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.junit.Test;/** * Created by Administrator on 2017/7/22 0022. * * 通过xml配置 */public class TestMyBatisByXml {    @Test    public void selectTest(){        SqlSession session = null;        try{            session = MybatisUtils.getSqlSessionFactory().openSession();            Student student = session.selectOne("com.zhy.user.bean.Student.selectStudent",2);            System.out.println(student);        }catch (Exception e) {            e.printStackTrace();        }finally {            session.close();        }    }    @Test    public void insertTest(){        SqlSession session = null;        try{            session = MybatisUtils.getSqlSessionFactory().openSession();            Student student = new Student();            student.setSname("Mr.Mybatis");            student.setAge(12);            student.setGno(1);            //返回影响行数            int resultNum = session.insert("com.zhy.user.bean.Student.insertStudent",student);            System.out.println(resultNum);        }catch (Exception e) {            e.printStackTrace();        }finally {            session.close();        }    }    @Test    public void deleteTest(){        SqlSession session = null;        try {            session = MybatisUtils.getSqlSessionFactory().openSession(true);            //返回影响行数            int num = session.delete("com.zhy.user.bean.Student.deleteStudent",17);            System.out.println(num);        }catch (Exception e){            e.printStackTrace();        }finally {            session.close();        }    }    @Test    public void updateStudent(){        SqlSession session = null;        try {            session = MybatisUtils.getSqlSessionFactory().openSession(true);            Student student = new Student();            student.setSname("zh1");            student.setSid(2);            //返回影响行数            int num = session.update("com.zhy.user.bean.Student.updateStudent", student);            System.out.println(num);        }catch (Exception e){            e.printStackTrace();        }finally {            session.close();        }    }}

9. 通过接口配置,StudentMapper.java

package com.zhy.user.dao;import com.zhy.user.bean.Student;import org.apache.ibatis.annotations.Delete;import org.apache.ibatis.annotations.Insert;import org.apache.ibatis.annotations.Select;import org.apache.ibatis.annotations.Update;/** * Created by Administrator on 2017/7/21 0021. */public interface StudentMapper {    @Select("select * from student where sid=#{sid}")    public Student selectStudent(int sid);    @Insert("insert into student(sname,age, gno) values(#{sname},${age},#{gno})")    public int insertStudent(Student student);    @Delete("delete from student where sid=#{sid}")    public int deleteStudent(int sid);    @Update("update student set sname=#{sname} where sid=#{sid}")    public int updateStudent(Student student);}

10. 通过接口配置对数据库的操作, TestMybatisByInterface.java

package com.zhy.test;import com.zhy.user.bean.Student;import com.zhy.user.dao.StudentMapper;import org.apache.ibatis.session.SqlSession;import org.junit.Test;import com.zhy.test.MybatisUtils;/** * Created by Administrator on 2017/7/20 0020. * * 通过interface配置 * */public class TestMybatisByInterface {    @Test    public void selectTest(){        SqlSession session = null;        try{            session = MybatisUtils.getSqlSessionFactory().openSession(true);            StudentMapper studentMapper = session.getMapper(StudentMapper.class);            Student student = studentMapper.selectStudent(2);            System.out.println(student);        }catch (Exception e) {            e.printStackTrace();        }finally {           session.close();        }    }    @Test    public void insertTest(){        SqlSession session = null;        session = MybatisUtils.getSqlSessionFactory().openSession();        StudentMapper studentMapper = session.getMapper(StudentMapper.class);        Student student = new Student();        student.setSname("zh332hyahaha");        student.setGno(1);        student.setAge(18);        try {            int num = studentMapper.insertStudent(student);            System.out.println(num);        }catch (Exception e){            e.printStackTrace();        }finally {            session.commit();            session.close();        }    }    @Test    public void deleteTest(){        SqlSession session = null;        try {            session = MybatisUtils.getSqlSessionFactory().openSession();            StudentMapper studentMapper = session.getMapper(StudentMapper.class);            int num = studentMapper.deleteStudent(18);            System.out.println(num);            session.commit();        }catch (Exception e){            e.printStackTrace();        }finally {            session.close();        }    }    @Test    public void updateStudent(){        SqlSession session = null;        try {            session = MybatisUtils.getSqlSessionFactory().openSession();            StudentMapper studentMapper = session.getMapper(StudentMapper.class);            Student student = new Student();            student.setSname("zh");            student.setSid(2);            int num = studentMapper.updateStudent(student);            session.commit();            System.out.println(num);        }catch (Exception e){            e.printStackTrace();        }finally {            session.close();        }    }}
注意:    SqlSesisonFactory.openSession()方法默认是不主动提交事务的。事务通过主动和手动两种方式提交。    A. 主动:SqlSessionFactory.openSession(true)返回SqlSession对象,这样是会主动提交事务。    B. 手动:SqlSessionFactory.openSession()返回SqlSession对象,这是手动提交事务,在做数    据库操作后,记得用SqlSession对象的commit()方法手动提交事务,否则会出现sql语句执行成功了,但是    数据库数据没有发生改变的情况。更多SqlSession的介绍请参考官网。Mybatis的简单CURD操作,更多介绍请参考Mybatis官网:http://www.mybatis.org/mybatis-3/zh/index.html
原创粉丝点击