欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Mybatis框架概述1

程序员文章站 2022-05-23 19:51:06
...

Mybatis框架概述1Mybatis框架概述1Mybatis框架概述1Mybatis框架概述1
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>
	<!--properties配置属性的元素,用于将内部的配置外在化,即通过外部配置来替换内部定义的属性;  -->
	<properties resource="db.properties"></properties>
	<!-- settings元素主要用于改变MyBatis运行时的行为,例如开启延迟加载等
		mapUnderscoreToCamelCase:是否开启自动驼峰命名规则,默认值是false;
		cacheEnabled:开启缓存,默认值是false;
		lazyLoadingEnabled: 延迟加载,默认值是false-->
	<settings>

        <!-- 控制台打印SQL语句 -->
        <setting name="logImpl" value="STDOUT_LOGGING" />
    </settings>
	<!--typeAliases元素给Java对象配置一个简短的名字即 配置别名 ;
		package子元素:name属性用于指定被定义别名的包,该包中所有的类都被指定别名
		typeAlias子元素:
		type属性:被定义别名的类的完全限定名,也就是包名+类名
		alias属性:自定义别名的值
		如果没有指定alias,MyBatis默认会将类名首字母改为小写作为别名
		别名不区分大小写,使用时注意重复-->
	<typeAliases>
	
		<typeAlias type="com.mybatis.entity.Student" alias="student"/>
	</typeAliases>
	<!--environments用于对环境进行配置,实际上也是数据源的配置,可以配置多个数据源,即多种数据库  -->
	<environments default="development">
		<!--environment可以定义多个,id属性用于定义环境的ID值,包含事务管理和数据源的配置信息  -->
		<environment id="development">
		<!-- transactionManager元素配置事务管理,type属性用于指定事务管理的方式,包括JDBC、MANAGED 
			JDBC:直接使用JDBC的提交和回滚设置
			MANAGED:让容器管理事务,比如spring容器-->
			<transactionManager type="JDBC"></transactionManager>
			<!--dataSource元素配置数据源,type属性指定使用哪种数据源,包括UNPOOLED、POOLED、JNDI
				UNPOOLED:每次请求时都需打开和关闭连接
				POOLED:利用数据库连接池,第三方组件
				JNDI:应用服务器内置
				 -->
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
				<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&amp;characterEncoding=UTF-8&amp;useSSL=false&amp;serverTimezone=UTC"/>
				<property name="username" value="root"/>
				<property name="password" value="123456"/>
			
			</dataSource>
		</environment>
	</environments>
	<!--mappers元素用于指定映射文件的位置 -->
		<mappers>
			<!-- 通过类路径指定 -->
			<mapper resource="com/mybatis/mapper/StudentMapper.xml"/>
			<!-- 通过本地路径指定 -->
			<!-- <mapper url="D:/..."/> -->
			<!-- 通过接口指定 ,注意:接口与映射文件的名称要保持一致,并且在同一目录-->
			<!-- <mapper class="接口的完全限定名"/> -->
			<!-- 通过包名指定,可以理解为批量引入 -->
			<!-- <package name="包名"/> -->
		</mappers>
</configuration>

Mybatis框架概述1

<?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 namespace="com.mybatis.mapper.StudentMapper">
<!-- select元素用于映射查询语句,也可以理解为读取数据库中的数据
	id:唯一标识符,经常与namespace组合起来使用,如果不唯一,MyBatis会报异常;
	parameterType: 传入SQL语句的参数类型(完全限定名或者别名);
	resultType:SQL语句执行后返回的类型(完全限定名或者别名);
	resultMap: 对resultMap元素进行引用;注意:返回类型时使用resultMap或resultType
	timeout: 设置超时参数,单位是秒,如果超时将报异常
	-->
<!-- insert元素用于映射插入语句,执行完SQL语句会返回一个表示插入记录数的整数,特有属性如下:
	keyProperty:它只针对插入和修改操作,将添加和修改执行SQL语句的返回值赋值给Java对象的某一个属性(主键对应的属性);
	keyColumn:它只针对插入和修改操作,设置表的主键位于第几列,当第一列不是主键时需要配置;
	useGeneratedKeys:它只针对插入和修改操作,MyBatis使用JDBC的getGeneratedKeys()获取主键,默认是false;
	 -->
<!-- update元素用于映射修改语句,基本属性与select元素一样,执行完SQL语句会返回一个表示插入记录数的整数,特有属性与insert元素一致  -->
<!-- delete元素用于映射删除语句,基本属性与select元素一样,执行完SQL语句会返回一个表示插入记录数的整数  -->
<!-- sql元素可以更加灵活地定义可重用的SQL代码片段,然后在其他元素中引用该片段-->
<!-- resultMap元素 -->
<sql id="table">id,stuNum,name</sql>
<!-- 相当于JDBC中的预编译 -->
<select id="selectAllStudents" resultType="student" >
<!-- select * from student -->
<!-- include元素的refid属性引用了自定义的代码片段,它的值就是sql元素的id值 -->
select <include refid="table"></include> from student
</select>
<!-- 查询id的学生信息 -->
<select id="selectOneStudent" resultType="student">
<!--${value}  -->
select * from student where id=#{id}
</select>
<!-- 查询id大于1的学生 -->
<select id="selectStudents" resultType="student">
select * from student where id> #{id}
</select>
<!-- 根据name模糊查询学生信息 -->
<select id="selectStudentss" resultType="student">
select * from student where name like concat('%',#{name},'%')
</select>
<!-- 添加学生 -->
<insert id="addStudent" parameterType="student" useGeneratedKeys="true" keyProperty="id">
	insert into student (stuNum,name) values (#{stuNum},#{name})
</insert>
<!-- 删除学生 -->
<delete id="deleteStudent" parameterType="java.lang.Integer">
	delete from student where id=#{id}
</delete>
<!-- 修改学生 -->
<update id="updateStudent" parameterType="student">
	update student set stuNum=#{stuNum},name=#{name} where id=#{id}
</update>

</mapper>

对学生进行增删改查(测试类)

public class TestStudent {
	
	public static void main(String[] args) {
		selectAllStudents();
		//selectOneStudent();
		//selectStudents();
		//selectStudentss();
		//addStudent();
		//deleteStudent();
		//updateStudent();
		
		//test();
	}
	
	/*
	 * 根据id查询学生
	 */
	public static void selectOneStudent() {
		SqlSession session=null;
		try {
			
			session = MybatisUtil.getSqlSession();
			//执行SQL语句,selectOne()第一个参数的值是映射文件中mapper元素的namespace值+select元素id值
			 Student student = session.selectOne("morning.selectOneStudent",3);
			 System.out.println(student);
		
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			session.close();
		}
	}
	/*
	 * 修改学生
	 */
	public static void updateStudent() {
		SqlSession session=null;
		try {
			
			session = MybatisUtil.getSqlSession();
			//执行SQL语句,
			Student student = session.selectOne("morning.selectOneStudent",3);
			student.setName("大山");
			int result = session.update("morning.updateStudent", student);
			if(result>0){
				System.out.println("修改成功");
			}
			session.commit();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			session.close();
		}		
	}
	/*
	 * 删除学生
	 */
	public static void deleteStudent() {
		SqlSession session=null;
		try {
			session = MybatisUtil.getSqlSession();
			//执行SQL语句,
			int result = session.delete("morning.deleteStudent", 13);
			if(result>0){
				System.out.println("删除成功");
			}
			session.commit();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			session.close();
		}
	}
	/*
	 * 添加学生
	 */
	public static void addStudent() {
		SqlSession session=null;
		try {
			session = MybatisUtil.getSqlSession();
			//执行SQL语句,selectList()第一个参数的值是映射文件中mapper元素的namespace值+select元素id值
			Student student=new Student("12", "小强");
			int result = session.insert("morning.addStudent",student);
			if(result>0){
				System.out.println("添加成功");
			}
			session.commit();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			session.close();
		}
	
	}
	/*
	 * 根据name模糊查询学生信息
	 */
	public static void selectStudentss() {
		SqlSession session=null;
		try {
			
			session = MybatisUtil.getSqlSession();
			//执行SQL语句,selectList()第一个参数的值是映射文件中mapper元素的namespace值+select元素id值
			List<Student> list = session.selectList("morning.selectStudentss","小");
			for (Student student : list) {
				System.out.println(student);
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			session.close();
		}
		
	}
	/*
	 * 查询id>1的学生信息
	 */
	public static void selectStudents() {
		SqlSession session=null;
		try {
			
			session = MybatisUtil.getSqlSession();
			//执行SQL语句,selectList()第一个参数的值是映射文件中mapper元素的namespace值+select元素id值
			List<Student> list = session.selectList("morning.selectStudents",1);
			for (Student student : list) {
				System.out.println(student);
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			session.close();
		}
	}
	
	/*
	 * 查询所有学生
	 */
	public static void selectAllStudents()  {
		SqlSession session=null;
		try {
			
			session = MybatisUtil.getSqlSession();
			//执行
			List<Student> list = session.selectList("com.mybatis.mapper.StudentMapper.selectAllStudents");
			for (Student student : list) {
				System.out.println(student);
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block0
			e.printStackTrace();
		}finally{
			session.close();
		}		
	}
}

2.mybatis的主要结构

Mybatis框架概述1Mybatis框架概述1

相关标签: mybatis