MyBatis框架的简单操作数据库

1,简单介绍一下mybatis框架,Mybatis是Apache的一个开源项目——iBatis,2010年这个项目迁移到Google Code,并改名为MyBatis.

  MyBatis是一个基于java的持久层框架。MyBatis提供的持久层框架包括SQL Maps和Data Access Objects(DAO),它消除了几乎所有的JDBC代码和参数的手工设置,以及结果的检索。MyBatis使用简单的XML或注解用于配置和原始的映射,将接口和java的POJOs映射成数据库中的记录。  

  目前,java的持久层框架产品有许多,常见的有hibernate和mybatis.mybatis是一个半自动映射的框架,因为Mybatis需要手动匹配POJO、SQL和映射关系,而和hibernate是一个全表映射的框架,只需提供pojo和映射关系即可。没有mybatis是一个小巧、方便、高效、简单、直接、半自动化的持久层框架 ,hibernate是一个强大、方便、高效、复杂、间接、全自动化的持久层框架。两个框架各有特点,需要根据情况选择合适的框架。

框架配置:建立一个普通的工程即可,然后建立一个lib文件夹

    (1)导包:导入一下的jar包

        (2)编写一个普通的POLO类与数据库对应 。

package cn.zhong.mybatis.user;

public class User {
	private int  id;
	private String loginName;
	private String loginPwd;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getLoginName() {
		return loginName;
	}
	public void setLoginName(String loginName) {
		this.loginName = loginName;
	}
	public String getLoginPwd() {
		return loginPwd;
	}
	public void setLoginPwd(String loginPwd) {
		this.loginPwd = loginPwd;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", loginName=" + loginName + ", loginPwd=" + loginPwd + "]";
	}
}

    (3)使用mybatis 框架,每一个对象都需要一个对应的mapper配置文件与之对应。

<?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">
<!-- namespace的值后面DAO层操作会用到,id的值是要查询的方法 
    #{} 这个相当于hibernate的?,是占位符,#{loginName}表示读入loginName的值放入。
-->
<mapper namespace="cn.zhong.mybatis.user.UserMapper">
    <select id="selectUserById" parameterType="Integer" resultType="cn.zhong.mybatis.user.User">
        select * from User where id = #{id}
    </select>
    <select id="selectAllUser" resultType="cn.zhong.mybatis.user.User">
        select * from User
    </select>
    <insert id="adduser" parameterType="cn.zhong.mybatis.user.User" >
        insert into User(loginName,loginPwd) values(#{loginName},#{loginPwd})
    </insert>
    <update id="updataId" parameterType="cn.zhong.mybatis.user.User">
        update User set loginName = #{loginName},loginPwd=#{loginPwd} where id = #{id}
    </update>
    <delete id="deleteUser" parameterType="cn.zhong.mybatis.user.User">
        delete from User where id = #{id}
    </delete>
</mapper>

    (4)编写一个主配置文件,里面包函数据库连接的信息,和把上面的映射文件放到配置文件中去。

<?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">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql:///mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="AYZXX"/>
             </dataSource>
         </environment>
    </environments>
    <mappers>
        <mapper resource="cn/zhong/mybatis/user/Mybatis.xml"/>
    </mappers>
</configuration>

    (5)上面的配置完毕,应该就是测试了,测试的步骤和hibernate差不多,比较简单。

//select * from User 查询表的所有;
	@Test
	public void fun2() throws IOException{
		
		//加载文件
		InputStream config= Resources.getResourceAsStream("sqlMapConfig.xml");
		// 用文件构建 SqlSessionFactory
		SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(config); 
		//用工厂建立,Session 
		SqlSession ss = ssf.openSession();
		List<User> list = ss.selectList("cn.zhong.mybatis.user.UserMapper.selectAllUser");
		System.out.println("********************************");		
		for (User user : list) {
			System.out.println(user);
		}
	}
//单个查询,和插入一条数据,放在一起了	
@Test
	public void fun1() throws IOException{
		//加载文件
		InputStream config= Resources.getResourceAsStream("sqlMapConfig.xml");
		// 用文件构建 SqlSessionFactory
		SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(config); 
		//用工厂建立,Session 
		SqlSession ss = ssf.openSession();
		
		User mu = ss.selectOne("cn.zhong.mybatis.user.UserMapper.selectUserById", 1);
		System.out.println(mu);
		User addmu = new User();
		addmu.setLoginName("Jeck");
		addmu.setLoginPwd("456");
		// 插入一组数据
		ss.insert("cn.zhong.mybatis.user.UserMapper.adduser", addmu);
		ss.commit();
		ss.close();
	}
//更新数据
	@Test 
	public void fun3() throws IOException{
		//加载文件
		InputStream config= Resources.getResourceAsStream("sqlMapConfig.xml");
		// 用文件构建 SqlSessionFactory
		SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(config); 
		//用工厂建立,Session 
		SqlSession ss = ssf.openSession();
		
		User updateUser = new User();
		updateUser.setId(8);
		updateUser.setLoginName("张兰");
		updateUser.setLoginPwd("789");
		System.out.println(updateUser);
		ss.update("cn.zhong.mybatis.user.UserMapper.updataId",updateUser);
		System.out.println(updateUser);
		ss.commit();
		ss.close();
		
	}
	//删除数据
	@Test
	public void fun4() throws IOException{
		//加载文件
		InputStream config= Resources.getResourceAsStream("sqlMapConfig.xml");
		// 用文件构建 SqlSessionFactory
		SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(config); 
		//用工厂建立,Session 
		SqlSession ss = ssf.openSession();
		User deleteUser = new User();
		deleteUser.setId(8);
		ss.delete("cn.zhong.mybatis.user.UserMapper.deleteUser",deleteUser);
		ss.commit();
		ss.close();
	}

总结:测试的时候我没有把所有的增删改查放到一个方法中,所有整体看起来代码比较多,重复的比较多,个人喜欢分类,宁愿复杂一点。这个配置比较简单,没啥说的。

源码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值