Mybatis应用(一)应用步骤

一、mybatis概述:

0、MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,由谷歌托管,并且改名为MyBatis 。2013年11月迁移到Github。
       1、iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)

MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。

3、MyBatis作为持久层框架,其主要思想是将程序中的大量sql语句剥离出来,配置在配置文件中,实现sql的灵活配置。这样做的好处是将sql与程序代码分离,可以在不修改程序代码的情况下,直接在配置文件中修改sql。


二、应用步骤:

1、添加jar包

【mybatis】

mybatis-3.1.1.jar  下载地址:点击打开链接

【Mysql驱动包】

mysql-connector-java-5.1.7-bin.jar  下载地址:点击打开链接



(相关资源我已上传,如有需要自行下载)

2、建库、建表

	create database mybatis;
	use mybatis;
	CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20), age INT);
	INSERT INTO users(NAME, age) VALUES('Tom', 12);
	INSERT INTO users(NAME, age) VALUES('Jack', 11);

3、工程目录


4、添加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>
	<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/mybatis" />
				<property name="username" value="root" />
				<property name="password" value="root" />
			</dataSource>
		</environment>
	</environments>
</configuration>

5、定义表对应的实体类

public class User {
	private int id;
	private String name;
	private int age;
    //get,set方法
}

6、定义操作users表的sql映射文件userMapper.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="com.rjxy.mybatis_test.test1.userMapper"> 
	<select id="getUser" parameterType="int" 
		resultType="com.rjxy.mybatis_test.test1.User">
		select * from users where id=#{id}
	</select>
</mapper>
7、在conf.xml文件中注册userMapper.xml文件

<mappers>
	<mapper resource="com/rjxy/mybatis_test/test1/userMapper.xml"/>
</mappers>

8、编写测试代码,执行定义好的select语句

public class Test {
	public static void main(String[] args) throws IOException {
		String resource = "conf.xml"; 
		//加载mybatis的配置文件(它也加载关联的映射文件)
		Reader reader = Resources.getResourceAsReader(resource); 
		//构建sqlSession的工厂
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
		//创建能执行映射文件中sql的sqlSession
		SqlSession session = sessionFactory.openSession();
		//映射sql的标识字符串
	String statement = "com.rjxy.mybatis.bean.userMapper"+".selectUser";
		//执行查询返回一个唯一user对象的sql
		User user = session.selectOne(statement, 1);
		System.out.println(user);
	}
}
9、操作User表的CRUD(增查改删),在UserMapper中添加

<insert id="insertUser" parameterType="com.rjxy.ibatis.bean.User">
	insert into users(name, age) values(#{name}, #{age});
</insert>
 
<delete id="deleteUser" parameterType="int">
	delete from users where id=#{id}
</delete>
		
<update id="updateUser" parameterType="com.rjxy.ibatis.bean.User">
	update users set name=#{name},age=#{age} where id=#{id}
</update>
		
<select id="selectUser" parameterType="int" resultType="com.rjxy.ibatis.bean.User">
	select * from users where id=#{id}
</select>
		
<select id="selectAllUsers" resultType="com.rjxy.ibatis.bean.User">
	select * from users
</select>

----- 注意-----------注意-----------注意-----------注意-----------注意-----------注意-----------注意-----------注意-----------注意-----------注意-----------注意------

注意:当执行CRUD操作时,insert、delete、update都执行正常,但是,select查不到数据,原因是实体类中没有提供无参构造函数。没有提供任何构造函数时,系统会提供一个默认的无参构造函数,但是,当提供了有参构造函数时,系统就不会提供,需要显式的定义。

10、运行发现数据库只能查询数据,但是增删改测试时没有报错,数据库却没有变化,原因是默认是手动添加的,需要修改。

session.commit();//将操作提交

或者

SqlSession session = sqlSessionFactory。openSession(true);//将默认改为自动提交

11、session用完之后应该关闭

session.close();





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值