什么是MyBatis

  MyBatis是Apache 的一个java开源项目,原名为iBatis(为Internet与abatis的结合),后因托管平台的迁移,由Goolge Code迁至Github,更名为MyBatis,MyBatis是一款支持动态SQL语句的持久框架,支持目的是让,开发者把大部分精力集中到dql开发上。

    MyBatis中的sql语句可以配置在XML文件中,这避免了JDBC在java中添加的sql语句的硬编码问题。(硬编码是指,编码的可修改性差,灵活性不高);通过MyBatis提供的输入参数映射方式,经参数的配置到SQL语句的配置文件中,解决了jdbc中参数在java类中手工配制的问题。;通过MyBatis的输出映射机制,将结果集的检索自动映射成相应的java对象,避免了JDBC中对结果集的手工检索。

    除此之外,MyBatis还可以创建自己的数据连接池,吃用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>
  <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:3306/test"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
      </dataSource>
    </environment>
  </environments>
  
  <!-- 配置user.xml -->
  <mappers>
    <mapper resource="/user.xml"/>
  </mappers>
</configuration>

SQL代码编写

<?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">
  
  
  <!-- 接口全类名必须与命名空间形同 sql命令写在xml文件中-->
<mapper namespace="com.zzxt.spring.mvc.jurisdiction.dao.staffInfoDao">
	<select id="verifyStaffId" parameterType="String" resultType="String">
	select password,locked from t_sys_user where username = #{value}
	</select>
	<select id="userList" resultType="com.zzxt.spring.mvc.jurisdiction.entity.StaffInfo">
		select * from t_sys_user
	</select>
	<select id="deleteStaffInfo" parameterType="int">
		delete from t_sys_user where user_id = #{value}
	</select>
	
	

	</mapper>

 DAO层对应的java文件,其中的命令在XML文件中实现

package com.zzxt.spring.mvc.jurisdiction.dao;

import java.util.List;

import org.springframework.stereotype.Repository;

import com.zzxt.spring.mvc.jurisdiction.entity.StaffInfo;

@Repository
public interface staffInfoDao {
	//接口中的方法在user.xml文件中实现
	public String verifyStaffId(String userName);
	public List<StaffInfo> userList();
	public StaffInfo upadateStaffInfo(int user_id);
	public void deleteStaffInfo(int user_id);
}

 方法的调用,sqlSession

package com.zzxt.spring.mvc.jurisdiction.dao;

import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class sqlSession {
	public SqlSession sqlConnect() {
		
		String res = "sqlMapConfig.xml";
		System.out.println("==res===" + res);
		InputStream inputStream = null;
		
		try {
			inputStream = Resources.getResourceAsStream(res);
		}catch(Exception e) {
			e.printStackTrace();
		}
		
		//用SqlSessionFactoryBuilder()中的build的方法创建一个创建SqlSession的SqlSessionFactory工厂
		
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		
		//工厂方法创建session
		SqlSession ss = sqlSessionFactory.openSession();
		return ss;
	}
}

 之后可以在另一个Controllor文件中进行方法的调用。这是我其中的一个方法

@Controller
@RequestMapping("/login")
public class LoginController {			
		//创建封装类sqlSession的对象
		sqlSession sqlOpen = new sqlSession();		
		@RequestMapping("/list")
		public String staffList(Map<String ,Object> map) {			
			System.out.println("员工列表");			
			//链接数据库
			SqlSession ss = sqlOpen.sqlConnect();			
			//获得方法类对象
			staffInfoDao si = ss.getMapper(staffInfoDao.class);		
			//staffInfoDao si = ss.selectList(staffInfoDao.class);	
			//将员工信息存储在链表中
			List<StaffInfo> listStaff = si.userList();	
			//System.out.println("==si.userList()=="+si.userList());
			//System.out.println("====list====" + listStaff);
			//利用约定大于协议,进行数据项jsp页面传递
			map.put("listStaff",listStaff);		
			//关闭数据库
			ss.close();
			//跳转到staff列表页面
			return "/views/stu/list.jsp";
		}

仅作参考, 有错误请指教

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值