Mybatis - 1 基本的增删改查

121514_zhNo_3519338.png

1.编写主配置文件 - mybatis.xml

mybatis.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 resource="jdbc.properties"/>
	<!-- 定义别名 -->
	<typeAliases>
		<!-- <typeAlias type="com.bjsxt.pojo.Student" alias="Student"/> -->
		<package name="com.bjsxt.pojo"/>
	</typeAliases>
	<!-- 配置运行环境 -->
	<environments default="testEN">
		<environment id="testEN">
			<transactionManager type="JDBC"/>
			<dataSource type="POOLED">
				<property name="driver" value="${jdbc.driver}"/>
				<property name="url" value="${jdbc.url}"/>
				<property name="username" value="${jdbc.username}"/>
				<property name="password" value="${jdbc.password}"/>
			</dataSource>
		</environment>
	</environments>
	
	<mappers>
		<mapper resource="com/bjsxt/mapper/StudentMapper.xml"/>
	</mappers>
</configuration>

2.工具类 - 获取SqlSession

public class MybatisUtil {
	
	private static SqlSessionFactory sqlSessionFactory;

	public static SqlSession getSqlSession(){
		
		try {
			InputStream inputStream = Resources.getResourceAsStream("mybatis.xml");
			if(sqlSessionFactory == null){
				
				 sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
			}
			return sqlSessionFactory.openSession();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
		
	}
}

3.写POJO类 - pojo.Student

public class Student {
	private Integer id;
	private String name;
	private int age;
	private double score;
	public Student() {
		super();
	}
	public Student(String name, int age, double score) {
		super();
		this.name = name;
		this.age = age;
		this.score = score;
	}
	getsettostring...
	
}

4.定义接口 - mapper.StudentMapper

public interface StudentMapper {
	void insertStudent(Student student);
	void insertStudentCacheId(Student student);
	void deleteStudent(int id);
	void updateStudent(Student student);
	
	Student selectById(int id);
	List<Student> selectAllStudent();
	List<Student> selectByName(String name);
}

5.编写接口对应的SQL语句 -  StudentMapper.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.bjsxt.mapper.StudentMapper">

    <!--5.1 parameterType可以省略-->
	<insert id="insertStudent" parameterType="Student">
		insert into student(name,age,score) values(#{name},#{age},#{score}) 
	</insert>
	
	<insert id="insertStudentCacheId">
		insert into student(name,age,score) values(#{name},#{age},#{score})
            <!--5.2 insert中使用selectKey标签可将自动生成的ID注入到内存中对象的ID-->
			<selectKey resultType="int" keyProperty="id" order="AFTER">
				select @@identity
			</selectKey>
	</insert>
	
	<delete id="deleteStudent">
		delete from student where id=#{id}
	</delete>
	
	<update id="updateStudent">
		update student set name=#{name},age=#{age},score=#{score} where id=#{id} 
	</update>
	
	<select id="selectById" resultType="Student">
		select name,age,score from student where id=#{id}
	</select>
	
	<select id="selectAllStudent" resultType="Student">
		select name,age,score from student 
	</select>
	
	<select id="selectByName" resultType="Student">
		select id,name,age,score from student where name like '%' #{name} '%'
		<!-- select id,name,age,score from student where name like concat("%",#{name},"%") -->
		<!-- select id,name,age,score from student where name like "%${value}%" -->
	</select>
</mapper>

6.测试

package com.bjsxt.test;

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.bjsxt.mapper.StudentMapper;
import com.bjsxt.pojo.Student;
import com.bjsxt.utils.MybatisUtil;

public class StudentTest {
	private StudentMapper mapper;
	private SqlSession sqlSession;
	@Before
	public void before(){
		sqlSession = MybatisUtil.getSqlSession();
		mapper = sqlSession.getMapper(StudentMapper.class);
	}
	@After
	public void After(){
		if(sqlSession != null ){
			sqlSession.close();
		}
	}
	@Test
	public void testSave(){
		Student student = new Student("张三",23,93.4);
		System.out.println("插入前:student"+student);
		mapper.insertStudent(student);
		System.out.println("插入后:student"+student);
		sqlSession.commit();
	}
	@Test
	public void testSave2(){
		Student student = new Student("张三",23,93.4);
		System.out.println("插入前:student"+student);
		mapper.insertStudentCacheId(student);
		System.out.println("插入后:student"+student);
		sqlSession.commit();
	}
	@Test
	public void testDelete(){
		mapper.deleteStudent(9);
		sqlSession.commit();
	}
	@Test
	public void testUpdate(){
		Student student = new Student("李四",24,96.4);
		student.setId(5);
		mapper.updateStudent(student);
		sqlSession.commit();
	}
	@Test
	public void testSeletcById(){
		Student student = mapper.selectById(2);
		System.out.println(student);
	}
	@Test
	public void testSelectAllStudents(){
		List<Student> students = mapper.selectAllStudent();
		for (Student student : students) {
			System.out.println(student);
		}
	}
	
	@Test
	public void testSeletcByName(){
		List<Student> list=mapper.selectByName("三");
		for (Student student : list) {
			System.out.println(student);
		}
	}
}

 

转载于:https://my.oschina.net/nan99/blog/1517917

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值