<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--提供ORM映射规则:写的是sql语句-->
<mapper namespace="mapper.UserMapper">
<!--id:该条语句的唯一标识
parameterType:表示入参类型
resultType:返回结果将要封装成的类型-->
<!--基本类型及String入参时,与#{}中的字符没有关系-->
<select id="selectById" parameterType="java.lang.Integer" resultType="model.User">
select * from user where id = #{a}
</select>
<select id="selectAll" resultType="model.User">
select * from user
</select>
<!--引用类型入参,是POJO中的属性对应的get方法的后缀,首字母小写-->
<insert id="insert" parameterType="model.User">
insert into USER (username,password) values (#{username},#{password})
</insert>
<delete id="delete" parameterType="java.lang.Integer">
delete from user where id = #{id}
</delete>
<update id="update" parameterType="model.User">
update USER set username=#{username},password=#{password} where id=#{id}
</update>
</mapper>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--提供ORM映射规则:写的是sql语句-->
<mapper namespace="mapper.UserMapper">
<!--提供bean对像与表的列表的映射关系-->
<resultMap id="baseResultMap" type="model.User">
<!--column表示表的列名,property对应类的属性的set方法后缀,首字母小写-->
<id column="ID" property="id"></id>
<result column="USERNAME" property="username"></result>
<result column="PASSWORD" property="password"></result>
</resultMap>
<!--id:该条语句的唯一标识
parameterType:表示入参类型
resultType:返回结果将要封装成的类型-->
<!--基本类型及String入参时,与#{}中的字符没有关系-->
<!--ResultType标签和ResultMap标签不能同时出现-->
<select id="selectById" parameterType="java.lang.Integer" resultMap="baseResultMap">
select * from user where id = #{id}
</select>
<select id="selectAll" resultMap="baseResultMap">
select * from user
</select>
<!--引用类型入参,是POJO中的属性对应的get方法的后缀,首字母小写-->
<insert id="insert" parameterType="model.User">
insert into USER (username,password) values (#{username},#{password})
</insert>
<delete id="delete" parameterType="java.lang.Integer">
delete from user where id = #{id}
</delete>
<update id="update" parameterType="model.User">
update USER set username=#{username},password=#{password} where id=#{id}
</update>
<select id="selectByPage" resultMap="baseResultMap" parameterType="model.Page">
select * from user limit #{firstIndex},#{maxResults}
</select>
<select id="selectByPage2" resultMap="baseResultMap">
select * from user limit #{firstIndex},#{maxResults}
</select>
</mapper>
package mapper;
import model.Page;
import model.User;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 1.接口的完全限定名和mapper.xml文件中的namespace值相同
* 2.接口的方法名要和mapper.xml文件中sql语句的id相同
* 注意:接口不能重载
*/
public interface UserMapper {
User selectById(int id);
List<User> selectAll();
Integer insert(User user);
Integer update(User user);
Integer delete(int id);
List<User> selectByPage(Page page);
//通地注解可以传递多个参数 @Param
List<User> selectByPage2(@Param("firstIndex") int firstIndex, @Param("maxResults")int maxResults);
}
普通的xml配置业务逻辑
package service;
import model.Page;
import model.User;
import org.apache.ibatis.session.SqlSession;
import tools.MybatisUtil;
import java.util.List;
public class UserService {
public User findById(int id){
SqlSession session = MybatisUtil.openSession();
try {
User user = session.selectOne("mapper.UserMapper.selectById", id);
return user;
}catch (Exception e){
e.printStackTrace();
}finally {
session.close();
}
return null;
}
public List<User> findAll(){
SqlSession session = MybatisUtil.openSession();
try {
List<User> users = session.selectList("mapper.UserMapper.selectAll");
return users;
}catch (Exception e){
e.printStackTrace();
}finally {
session.close();
}
return null;
}
public Integer save(User user){
SqlSession session = MybatisUtil.openSession();
try {
//开启事务
int i = session.insert("mapper.UserMapper.insert",user);
//手动提交事务
session.commit();
return i;
}catch (Exception e){
e.printStackTrace();
//事务回滚
session.rollback();
}finally {
session.close();
}
return 0;
}
public Integer remove(Integer id){
SqlSession session = MybatisUtil.openSession();
try {
//开启事务
int i = session.delete("mapper.UserMapper.delete",id);
//手动提交事务
session.commit();
return i;
}catch (Exception e){
e.printStackTrace();
//事务回滚
session.rollback();
}finally {
session.close();
}
return 0;
}
public Integer modify(User user){
SqlSession session = MybatisUtil.openSession();
try {
//开启事务
int i = session.update("mapper.UserMapper.update",user);
//手动提交事务
session.commit();
return i;
}catch (Exception e){
e.printStackTrace();
//事务回滚
session.rollback();
}finally {
session.close();
}
return 0;
}
public List<User> findByPage(Page page){
SqlSession session = MybatisUtil.openSession();
try {
List<User> users = session.selectList("mapper.UserMapper.selectByPage",page);
return users;
}catch (Exception e){
e.printStackTrace();
}finally {
session.close();
}
return null;
}
}
接口映射(动态代理)业务逻辑
package service;
import mapper.UserMapper;
import model.Page;
import model.User;
import org.apache.ibatis.session.SqlSession;
import tools.MybatisUtil;
import java.util.List;
/**
* 重点掌握动态代理方式实现mapper层接口的方式
*/
public class UserService2 {
public User findById(int id){
SqlSession session = MybatisUtil.openSession();
try {
//在内存中动态生成了字节码文件(没有源码) $___.class impelments UserMapper
//通过动态代理方式产生接口的代理类对像(JDK,CGLIB)
UserMapper mapper = session.getMapper(UserMapper.class);
User user = mapper.selectById(id);
return user;
}catch (Exception e){
e.printStackTrace();
}finally {
session.close();
}
return null;
}
public List<User> findAll(){
SqlSession session = MybatisUtil.openSession();
try {
UserMapper mapper = session.getMapper(UserMapper.class);
List<User> users = mapper.selectAll();
return users;
}catch (Exception e){
e.printStackTrace();
}finally {
session.close();
}
return null;
}
public Integer save(User user){
SqlSession session = MybatisUtil.openSession();
try {
//开启事务
UserMapper mapper = session.getMapper(UserMapper.class);
Integer i = mapper.insert(user);
//手动提交事务
session.commit();
return i;
}catch (Exception e){
e.printStackTrace();
//事务回滚
session.rollback();
}finally {
session.close();
}
return 0;
}
public Integer remove(Integer id){
SqlSession session = MybatisUtil.openSession();
try {
//开启事务
UserMapper mapper = session.getMapper(UserMapper.class);
Integer i= mapper.delete(id);
//手动提交事务
session.commit();
return i;
}catch (Exception e){
e.printStackTrace();
//事务回滚
session.rollback();
}finally {
session.close();
}
return 0;
}
public Integer modify(User user){
SqlSession session = MybatisUtil.openSession();
try {
//开启事务
UserMapper mapper = session.getMapper(UserMapper.class);
Integer i = mapper.update(user);
//手动提交事务
session.commit();
return i;
}catch (Exception e){
e.printStackTrace();
//事务回滚
session.rollback();
}finally {
session.close();
}
return 0;
}
public List<User> findByPage(Page page){
SqlSession session = MybatisUtil.openSession();
try {
UserMapper mapper = session.getMapper(UserMapper.class);
List<User> users = mapper.selectByPage(page);
return users;
}catch (Exception e){
e.printStackTrace();
}finally {
session.close();
}
return null;
}
public List<User> findByPage2(int firstIndex,int maxResults){
SqlSession session = MybatisUtil.openSession();
try {
UserMapper mapper = session.getMapper(UserMapper.class);
List<User> users = mapper.selectByPage2(firstIndex,maxResults);
return users;
}catch (Exception e){
e.printStackTrace();
}finally {
session.close();
}
return null;
}
}