MyBatis的初步使用
来源:互联网 发布:天猫双11交易数据 编辑:程序博客网 时间:2024/06/03 14:51
这里用到的是mybatis-3.2.2.jar mysql-connector-java-5.1.24-bin.jar
学生表:学生Id(自增),学生姓名
对学生表进行CRUD, 查询条件“学生姓名”
Student 实体类
package com.bnuep.domain;
public class Student {
int id;
String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
StudentMapper.java
package com.bnuep.mapper;
import java.util.Map;
import com.bnuep.domain.Student;
public interface StudentMapper {
public void insertStudent(Student student);
public Student selectStudent(String name);
public void deleteStudent(String name);
public void updateStudent(Map map);
}
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 namespace="com.bnuep.mapper.StudentMapper">
<!-- 这里namespace必须是StudentMapper接口的路径,不然要运行的时候要报错 “is not known to the MapperRegistry” -->
<insert id="insertStudent" parameterType="Student">
insert into student(name) values(#{name})
<!-- 这里sql结尾不能加分号,否则报“ORA-00911”的错误 -->
</insert>
<!-- 这里的id必须和UserMapper接口中的接口方法名相同,不然运行的时候也要报错 -->
<select id="selectStudent" resultType="Student" parameterType="java.lang.String">
select * from student where name=#{name}
</select>
<!-- 传多个参数使用Map -->
<update id="updateStudent" parameterType="java.util.Map">
update student set
name=#{name} where name=#{name2}
</update>
<delete id="deleteStudent" parameterType="java.lang.String">
delete from student
where name = #{name}
</delete>
</mapper>
获取SessionFactory的工具类
package com.bnuep.Util;
import java.io.IOException;
import java.io.Reader;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
//这个类专门用来获取sessionfactroy的
public class MapperUtil {
private final static SqlSessionFactory sqlSessionFactory;
//静态初始化块
static {
String resource = "mybatis-config.xml";
Reader reader = null;
try {
reader = Resources.getResourceAsReader(resource);
} catch (IOException e) {
System.out.println(e.getMessage());
}
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
}
//定义静态方法获取
public static SqlSessionFactory getSqlSessionFactory() {
return sqlSessionFactory;
}
}
Junit测试类
package com.bnuep.mapper;
import static org.junit.Assert.*;
import java.util.HashMap;
import java.util.Map;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.Test;
import com.bnuep.Util.MapperUtil;
import com.bnuep.domain.Student;
public class StudentMapperTest {
@Test
public void insertStudent() {
SqlSessionFactory sessionFactory = MapperUtil.getSqlSessionFactory();
SqlSession session = sessionFactory.openSession();
Student student = new Student();
student.setName("Ascii");
StudentMapper studentMapper = session.getMapper(StudentMapper.class);
studentMapper.insertStudent(student);
session.commit();
session.close();
}
@Test
public void selectStudent() {
SqlSessionFactory sessionFactory = MapperUtil.getSqlSessionFactory();
SqlSession session = sessionFactory.openSession();
StudentMapper studentMapper = session.getMapper(StudentMapper.class);
Student student = studentMapper.selectStudent("Rose");
System.out.println(student.getName());
session.close();
}
@Test
public void updateStudent() {
SqlSessionFactory sessionFactory = MapperUtil.getSqlSessionFactory();
SqlSession session = sessionFactory.openSession();
StudentMapper studentMapper = session.getMapper(StudentMapper.class);
Map<String,String> map = new HashMap<String, String>();
map.put("name","Jack");
map.put("name2","Tom");
studentMapper.updateStudent(map);
session.commit();
session.close();
}
@Test
public void deleteStudent() {
SqlSessionFactory sessionFactory = MapperUtil.getSqlSessionFactory();
SqlSession session = sessionFactory.openSession();
StudentMapper studentMapper = session.getMapper(StudentMapper.class);
studentMapper.deleteStudent("Jack");
session.commit();
session.close();
}
}
SRC目录下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>
<settings>
<!-- changes from the defaults for testing -->
<setting name="cacheEnabled" value="false" />
<setting name="useGeneratedKeys" value="true" />
<setting name="defaultExecutorType" value="REUSE" />
</settings>
<typeAliases>
<typeAlias alias="Student" type="com.bnuep.domain.Student" />
<typeAlias alias="Course" type="com.bnuep.domain.Course" />
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="jdbc" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost/hibernate" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/bnuep/mapper/StudentMapper.xml" />
<mapper resource="com/bnuep/mapper/CourseMapper.xml" />
</mappers>
</configuration>
下面是课程的代码
成绩表: 成绩Id(GUID),课程名称,学生Id,分数
对成绩表进行CRUD,查询条件:
1)根据学生姓名查询,查出该学生所有的成绩
2)根据分数查询:把所有“60<分数<90”的学生信息给查询出来
课程实体类
package com.bnuep.domain;
public class Course {
String cname;
int id;
int score;
int sid;
public String getCname() {
return cname;
}
public int getId() {
return id;
}
public int getScore() {
return score;
}
public int getSid() {
return sid;
}
public void setCname(String cname) {
this.cname = cname;
}
public void setId(int id) {
this.id = id;
}
public void setScore(int score) {
this.score = score;
}
public void setSid(int sid) {
this.sid = sid;
}
}
package com.bnuep.mapper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.bnuep.domain.Course;
public interface CourseMapper {
//这里并未定义方法 直接在测试类里使用selectList
}
CourseMapper.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.bnuep.mapper.CourseMapper">
<!-- 自定义一个结果集 -->
<resultMap type="Course" id="courseResultMap">
<id property="id" column="ID" />
<result property="cname" column="CNAME" />
<result property="sid" column="SID" />
<result property="score" column="SCORE" />
</resultMap>
<select id="selectCourse" parameterType="java.lang.String"
resultMap="courseResultMap">
select * from course
where sid = (select id from student
where
name=#{name})
</select>
<resultMap type="com.bnuep.domain.Student" id="courseScoreResultMap">
<id property="id" column="ID" />
<result property="name" column="NAME" />
</resultMap>
<select id="select_Score_Course" parameterType="java.lang.String"
resultMap="courseScoreResultMap">
select student.* from student join (select sid from course
where score between 60 and 90) tt on (tt.sid=student.id)
</select>
</mapper>
测试类
package com.bnuep.mapper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.Test;
import com.bnuep.Util.MapperUtil;
import com.bnuep.domain.Course;
import com.bnuep.domain.Student;
public class CourseMapperTest {
@Test
public void selectCourseTest() {
SqlSessionFactory sessionFactory = MapperUtil.getSqlSessionFactory();
SqlSession session = sessionFactory.openSession();
// 传入一个xml中定义的id名,后面传入的是参数jack
List<Course> list = session.selectList(
"com.bnuep.mapper.CourseMapper.selectCourse", "Rose");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i).getCname() + " "
+ list.get(i).getScore());
}
session.close();
}
@Test
public void select_Score_CourseTest() {
SqlSessionFactory sessionFactory = MapperUtil.getSqlSessionFactory();
SqlSession session = sessionFactory.openSession();
// 传入一个xml中定义的id名,后面传入的是参数jack
List<Student> list = session
.selectList("com.bnuep.mapper.CourseMapper.select_Score_Course");
for (int i = 0; i < list.size(); i++) {
System.out.println("NAME "+list.get(i).getName() + " ID "
+ list.get(i).getId());
}
session.close();
}
}
- MyBatis的初步使用
- mybatis-初步使用
- mybatis的初步学习
- mybatis的初步应用
- mybatis使用初步问题解决方案
- Mybatis初步
- Mybatis初步
- mybatis的初步核心(一)
- mybatis的初步学习——1
- 触发器的使用初步
- 索引的使用初步
- Repeater的初步使用
- FileWriter的初步使用
- webzip70的初步使用
- LayoutAnimationController的初步使用
- git的初步使用
- IplImage的初步使用
- Volley的初步使用
- 磁盘驱动器
- ——黑马程序员——C语言中一维数组基本概念和初始化
- mysql5.6.26改变默认数据目录问题
- 博客又要搬家了。。 搬回ltwy.me
- Linux wait函数解析2
- MyBatis的初步使用
- Python深入:setuptools简介
- Easyui
- 编程之美-字符串移位包含的问题
- 异常和异常处理(windows平台)
- inet_ntoa函数在编译时候报 ”warning: assignment makes pointer from integer without a cast“ 告警
- IOS开发基础Object-C(02 )—第一个OC类
- sleep()、wait()、yield()、join()方法 解析
- 9、Swift语言中switch条件语句的基本用法