根据ID查询
-
新建一张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');
-
新建Student类,注意类中的属性名称应与数据表中字段的名称相同。
import java.io.Serializable; @SuppressWarnings("serial") public class Student implements Serializable { private Integer sid; private String name; private Integer age; private String graname; //方法略 }
-
创建映射表,名称为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>
-
新建测试类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都写成对象的类名。
- 在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>
- 查询全部学生
List<Student> students = sqlSession.selectList("com.gub.vo.PersonMapper.querySelectAll");
- 增加学生
Student student = new Student(); student.setName("Alis"); student.setAge(22); student.setGraname("six"); sqlSession.insert("com.gub.vo.PersonMapper.insertStudent",student);
- 修改学生
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();
- 删除学生
int count = sqlSession.delete("com.gub.vo.PersonMapper.deleteStudentById",3); sqlSession.commit();
注意:如果使用的事物方式为JDBC,则需要手工提交,即sqlSession.commit()