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>
<!-- 允许JDBC支持生成的键 自动增长-->
<setting name="useGeneratedKeys" value="true"/>
</settings>
<typeAliases>
<!-- 配置数据类型的别名 -->
<typeAlias type="com.luohao.entity.Classes" alias="Classes"/>
<typeAlias type="com.luohao.entity.Student" alias="Student"/>
</typeAliases>
<!-- 默认的环境ID -->
<environments default="development">
<!-- 每个environment元素定义的环境ID -->
<environment id="development">
<!-- 事务处理方式 -->
<transactionManager type="JDBC" />
<!-- 数据源配置 -->
<dataSource type="POOLED">
<!-- 数据库JDBC驱动 -->
<property name="driver" value="com.mysql.jdbc.Driver" />
<!-- 数据库URL -->
<property name="url" value="jdbc:mysql://localhost:3306/school" />
<!-- 数据库用户 -->
<property name="username" value="root" />
<!-- 密码 -->
<property name="password" value="950126" />
</dataSource>
</environment>
</environments>
<mappers>
<!-- 配置映射文件 -->
<mapper resource="com/luohao/mapper/ClassesMapper.xml"/>
<mapper resource="com/luohao/mapper/StudentMapper.xml"/>
</mappers>
</configuration>
MyBatisUtils中的sqlsessionFactroy
package com.luohao.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;
public class MyBatisUtil { //获取SqlSession工具类
//单例SqlSessionFactory对象
private MyBatisUtil(){}
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对象
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
}
//返回单例SqlSessionFactory对象
public static SqlSessionFactory getSqlSessionFactory(){
return sqlSessionFactory;
}
}
studentMapper.java
import java.util.HashMap;
import java.util.List;
import com.luohao.entity.Student;
public interface StudentMapper {
public void insert(Student student);
public void delete(int stuId);
public void update(Student student);
public Student getStudentById(int stuId);
public List<Student> getStudents();
public List<Student> getStudentsPage(HashMap<String, Integer> map);
/**
* 动态sql查询
* @param student
* @return
*/
public List<Student> searchStudent(Student student);
}
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">
<!-- 映射器名字空间,即BlogMapper对象的完整路径名 -->
<mapper namespace="com.luohao.mapper.StudentMapper">
<resultMap type="Student" id="studentResult">
<id column="stuId" property="stuId" />
<result column="name" property="name" />
<result column="age" property="age" />
<result column="sex" property="sex" />
<association column="classId" property="classes" javaType="Classes">
<id column="classId" property="classId"/>
<id column="cname" property="name"/>
</association>
</resultMap>
<insert id="insert" parameterType="Student">
insert into student(name,age,sex,classId) values (#{name},#{age},#{sex},#{classes.classId})
</insert>
<delete id="delete" parameterType="int">
delete from student where stuId = #{0}
</delete>
<update id="update" parameterType="Student">
update student set name = #{name},age = #{age},sex = #{sex},classId = #{classes.classId} where stuId = #{stuId}
</update>
<select id="getStudentById" parameterType="int" resultMap="studentResult">
SELECT s.*,c.classId,c.name from student s INNER JOIN classes c on s.classId = c.classId where s.stuId = #{0};
</select>
<select id="getStudents" resultMap="studentResult">
SELECT s.*,c.classId,c.name as cname from student s INNER JOIN classes c on s.classId = c.classId;
</select>
<select id="getStudentsPage" parameterType="HashMap" resultMap="studentResult">
SELECT * from student LIMIT ${start},${end};
</select>
<select id="searchStudent" parameterType="Student" resultMap="studentResult">
SELECT * from student
<where>
<if test="name!=null">
and name like #{name}
</if>
<if test="age!=null">
and age = ${age}
</if>
<if test="sex!=null">
and sex = ${sex}
</if>
</where>
</select>
</mapper>
studentService.java
package com.luohao.service;
import java.util.HashMap;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import com.luohao.entity.Classes;
import com.luohao.entity.Student;
import com.luohao.mapper.ClassesMapper;
import com.luohao.mapper.StudentMapper;
import com.luohao.util.MyBatisUtil;
public class StudentService {
public List<Student> getStudents(){
SqlSession session = MyBatisUtil.getSqlSessionFactory().openSession();
StudentMapper mapper = session.getMapper(StudentMapper.class);
return mapper.getStudents();
}
public Student getStudentById(int stuId){
SqlSession session = MyBatisUtil.getSqlSessionFactory().openSession();
StudentMapper mapper = session.getMapper(StudentMapper.class);
return mapper.getStudentById(stuId);
}
public List<Student> getStudentsPage(int pageIndex,int pageSize){
SqlSession session = MyBatisUtil.getSqlSessionFactory().openSession();
StudentMapper mapper = session.getMapper(StudentMapper.class);
HashMap<String, Integer> map = new HashMap<String, Integer>();
map.put("start", (pageIndex-1)*pageSize);
map.put("end", pageSize);
return mapper.getStudentsPage(map);
}
public void insert(Student student){
SqlSession session = MyBatisUtil.getSqlSessionFactory().openSession();
StudentMapper mapper = session.getMapper(StudentMapper.class);
mapper.insert(student);
session.commit();
session.close();
}
public void delete(int stuId){
SqlSession session = MyBatisUtil.getSqlSessionFactory().openSession();
StudentMapper mapper = session.getMapper(StudentMapper.class);
mapper.delete(stuId);
session.commit();
session.close();
}
public void update(Student student){
SqlSession session = MyBatisUtil.getSqlSessionFactory().openSession();
StudentMapper mapper = session.getMapper(StudentMapper.class);
mapper.update(student);
session.commit();
session.close();
}
public List<Student> searchStudent(Student student){
SqlSession session = MyBatisUtil.getSqlSessionFactory().openSession();
StudentMapper mapper = session.getMapper(StudentMapper.class);
return mapper.searchStudent(student);
}
}