【MyBatis笔记】1、MyBatis配置及入门示例,MyBatis-Statement方式的增删改查(CRUD)

mybatis:
    ibatis:apache
    2010 ibatis-> google colde ,Mybatis


MyBatis可以简化JDBC操作,实现数据的持久化 。
    ORM:Object Relational Mapping
        person对象   person表

    ORM:概念 ,
        Mybatis是ORM的一个实现/Hibernate 
    orm可以是的开发人员  像操作对象一样 操作数据库表。


开发mybatis程序从步骤:
1.配置mybatis
conf.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值 和  environment的 id 来指定 MyBatis运行时的数据库环境-->
	<environments default="development">
		<!-- 开发环境(自己的计算机) -->
		<environment id="development">
		
		
			<!-- 事务提交方式:
				JDBC:利用JDBC方式处理事务(commit  rollback  close)
				MANAGED:将事务交由 其他组件去托管(spring ,jobss),默认 会关闭连接。
			
			<transactionManager type="MANAGED"/>
				<property name="closeConnection" value="false"/>
			 -->
			   <transactionManager type="JDBC" />
				<!-- 数据源类型:
						UNPOOLED:传统的JDBC模式(每次访问数据库,均需要 打开、关闭等数据库操作,但是 打开、关闭数据库是比较消耗性能的)
						POOLED:使用数据库连接池
						JNDI:从tomcat中获取一个内置的数据库连接池 (数据库连接池-数据源  )
				 -->
				 
				<dataSource type="POOLED">
				
				
					<!-- 配置数据库信息 -->
					<property name="driver" value="oracle.jdbc.OracleDriver"/>
					<property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:ORCL"/>
					<property name="username" value="scott"/>
					<property name="password" value="tiger"/>
				</dataSource>
		</environment>
		
		<!-- 真正的项目应该在   发布的那台计算机上运行 -->
		<environment id="shishi">
			<transactionManager type="JDBC"/>
				<dataSource type="POOLED">
				<!-- 配置数据库信息 -->
				<property name="driver" value="oracle.jdbc.OracleDriver"/>
				<property name="url" value="jdbc:oracle:thin:@192.168.1.183:1521:ORCL"/>
				<property name="username" value="scott"/>
				<property name="password" value="tiger"/>
			</dataSource>
		</environment>
		
		
		<!--  -->
		<environment id="test">
			<transactionManager type="JDBC"/>
				<dataSource type="POOLED">
				<!-- 配置数据库信息 -->
				<property name="driver" value="oracle.jdbc.OracleDriver"/>
				<property name="url" value="jdbc:oracle:thin:@192.168.1.111:1521:ORCL"/>
				<property name="username" value="scott"/>
				<property name="password" value="tiger"/>
			</dataSource>
		</environment>
	</environments>
	
	
	
	<mappers>
		<!-- 加载映射文件 -->
		<mapper resource="org/lanqiao/entity/studentMapper.xml"/>
	</mappers>
</configuration>

2.表 - 类
映射文件xxMapper.xml  :增删改查标签<select>

<?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:该mapper.xml映射文件的 唯一标识 -->
<mapper namespace="org.lanqiao.entity.studentMapper">
	<!--  后续通过  namespace.id-->
	<!--parameterType:输入参数的类型
	resultType:查询返回结果值的类型  ,返回类型  -->
	<select id="queryStudentByStuno" parameterType="int"  resultType="org.lanqiao.entity.Student" >
			select * from student where stuno = #{stuno}
	</select>
	
	
	<insert id="addStudent" parameterType="org.lanqiao.entity.Student" >
		insert into student(stuno,stuname,stuage,graname) values(#{stuNo},#{stuName},#{stuAge},#{graName}  ) 
	</insert>
	
	
	
	<delete id="deleteStudentByStuno"  parameterType="int">
		delete from student where stuno = #{stuno} 
	</delete>
	
	<update id="updateStudentByStuno" parameterType="org.lanqiao.entity.Student" >
		update student set stuname=#{stuName} ,stuage=#{stuAge},graname=#{graName} where stuno=#{stuNo} 
	</update>
	
	<select id="queryAllStudents"  resultType="org.lanqiao.entity.Student" >
		select * from student 
	</select>

	
	
	
	
</mapper>

3.测试类:
session.selectOne("需要查询的SQL的namespace.id","SQL的参数值");

		//加载MyBatis配置文件(为了访问数据库)
		Reader reader = Resources.getResourceAsReader("conf.xml") ;//返回一个reader流,包含数据库配置信息
		SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader) ;//
		//session 相当于 connection
		SqlSession session = sessionFactory.openSession() ;
		String statement = "org.lanqiao.entity.personMapper.queryPersonById" ;
		Person person = session.selectOne(statement,1) ;
		System.out.println(person);
		session.close(); 

mybatis约定:

输入参数parameterType 和 输出参数resultType ,在形式上都只能有一个

如果输入参数 :是简单类型(8个基本类型+String) 是可以使用任何占位符,#{xxxx}
                          如果是对象类型,则必须是对象的属性 #{属性名}

输出参数:  如果返回值类型是一个 对象(如Student),则无论返回一个、还是多个,
                    在resultType都写成org.lanqiao.entity.Student
                    即 resultType="org.lanqiao.entity.Student"

                    没有list。

注意事项:
①如果使用的 事务方式为 jdbc,则需要 手工commit提交,即session.commit();

所有的标签 <select> <update>等 ,都必须有sql语句,但是sql参数值可选
select* from student  where stuno = #{xx}
sql有参数:session.insert(statement, 参数值 );

sql没参数:session.insert(statement);

猜你喜欢

转载自blog.csdn.net/kuaileky/article/details/89763200