mybatis框架简单总结

mybatis框架简单总结

mybatis是半自动orm框架,是一个映射sql语句的框架,没有hibernate功能那么强大,但是胜在轻便易上手,给我的感觉是JDBC的威力强化版,基本使用方法是

配置文件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"></transactionManager>
			<dataSource type="POOLED">
<!-- 下面的配置属性可以通过属性文件.protertys类进行配置,也可以写死 -->


<!-- 此处输入数据库驱动类 -->
				<property name="driver" value="com.mysql.jdbc.Driver"/>
<!-- 此处输入数据库url -->
				<property name="url" value="jdbc:mysql://127.0.0.1:3306/mybaitstest"/>
<!-- 此处输入用户名 -->
				<property name="username" value="root"/>
<!-- 此处输入密码 -->
				<property name="password" value="09043330"/>
			</dataSource>
		</environment>
	</environments>
	<mappers>
          <!-- mybatis框架对应的映射文件,这些映射文件主要用来编写sql语句,映射一个java方法 -->
		  <mapper resource="mybatis/mybatisMapper.xml"/>
	</mappers>
</configuration>
映射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="mybatis.example.PersonMap">
  <!--
 select标签,里面用于编写select语句,基本的属性有
id:	对应sql语句的唯一标识符,
paramterType:	对应输入的参数,mybaits可以推断输入的参数
resultType:		返回结果
resultMap:		外部map
其他属性暂时用不到,不太常用
 -->
  <select id="selectPerson" resultType="javabean.Person">
<!-- 使用#{}来标识sql语句中需要动态输入的变量 -->
    select * from persons where id = #{id}
  </select>
<!--
insert标签,用于编写用于映射的insert的sql语句,基本属性和select标签
类似。
-->
  <insert id="insertPerson" parameterType="javabean.Person">
  	insert into persons(id,name,sex)
  	values (#{id},#{name},#{sex})
  </insert>
  <update id="updatePerson">
  	update persons set
  		name = #{name},
  		sex = #{sex}
  	where id = #{id}
  </update>
  <delete id="deletePerson">
  	delete from persons where id = #{id}
  </delete>
</mapper>
实际使用
实际使用大多是用到SqlSession对象,SqlSession对象通过SqlSessionFactory的openSession方法获得,然后基本上就是使用session对象的select,update,insert方法来对数据库进行增删查改,使用映射的sql语句需要改sql语句的完全限定名称,也就是<包名>.<id名>

import java.io.*;
import java.util.*;


import org.apache.ibatis.builder.SqlSourceBuilder;
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 javabean.Person;


public class Manger {
	private static SqlSessionFactory sqlSessionFactory;
	public Manger() throws IOException {
		String resource = "mybatis/mybatisConfiguration.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
	}
	public Person selectone(int id) {
		SqlSession session = sqlSessionFactory.openSession();
		Person person = null;
		try {
			person = (Person)session.selectOne("mybatis.example.PersonMap.selectPerson",id);
		}finally {
			session.close();
		}
		return person;
	}
	public void insertone() {
		SqlSession session = sqlSessionFactory.openSession();
		Person p = new Person();
		p.setId(1);
		p.setName("sjm2");
		p.setSex("男");
		session.insert("mybatis.example.PersonMap.insertPerson", p);
		session.commit();
	}
	public void updateone() {
		SqlSession session = sqlSessionFactory.openSession();
		Person p = new Person();
		p.setId(0);
		p.setName("znh");
		p.setSex("女");
		session.update("mybatis.example.PersonMap.updatePerson",p);
		session.commit();
	}
	public static void main(String[] args) throws IOException {
		Manger m = new Manger();
		m.insertone();
		System.out.println(m.selectone(1));
	}
}
下面用mybatis框架写有关于一个用户注册,用户登录的功能。

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">


<mapper namespace="mybatis.usermapper">
	<insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
		insert into users(name,password)
		values(#{name},#{password})
	</insert>
	<select id="selectUserfromid" resultType="javabean.User">
		select * from users where id = #{id}
	</select>
	<select id="selectUserfromname" resultType="javabean.User">
		select * from users where name = #{name}
	</select>
	<update id="updateUserfromid">
		update users set
			name = #{name},
			password = #{password}
		where id = #{id}
	</update>
</mapper>
servlet
package servlet;


import java.io.IOException;


import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;


import org.apache.ibatis.session.SqlSession;


import javabean.User;
import mybaitsManger.Manger;
import sun.rmi.server.Dispatcher;


@WebServlet("/register.servlet")
public class Register extends HttpServlet {


	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
		req.setCharacterEncoding("utf-8");
		String name = req.getParameter("name");
		String password = req.getParameter("password");
		SqlSession session = Manger.getSqlSessionFactory().openSession();
		try {
			User user = new User();
			user.setName(name);
			user.setPassword(password);
			session.insert("mybatis.usermapper.insertUser",user);
			session.commit();
		}finally {
			session.close();
		}
		HttpSession session1 = req.getSession();
		session1.setAttribute("username", name);
		RequestDispatcher dispatcher = req.getRequestDispatcher("/index.jsp");
		dispatcher.forward(req, resp);
	}
	
}



javabean
package javabean;


public class User {
	private int id;		// 主键,自增长
	private String name;
	private String password;
	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;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
}



管理SQLSession类,这个没写好
package mybaitsManger;


import java.io.*;
import java.util.*;


import org.apache.ibatis.builder.SqlSourceBuilder;
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 javabean.Person;


public class Manger {
	private static SqlSessionFactory sqlSessionFactory;
	static{
		String resource = "mybatis/mybatisConfiguration.xml";
		InputStream inputStream;
		try {
			inputStream = Resources.getResourceAsStream(resource);
			sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public static SqlSessionFactory getSqlSessionFactory() {
		return sqlSessionFactory;
	}
}
注册页面
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
	<form action="register.servlet" method="POST">
		账户名:<input name="name" type="text" />
		密码:<input name="password" type="password" />
		<input value="提交" type="submit" />
	</form>
</body>
</html>
首页
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
	Object name = session.getAttribute("username");
	
	if(name!=null){
		out.println("欢迎您"+name+"用户");
	}else{
		out.println("欢迎来到首页");
	}
	%>
</body>
</html>


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值