Mybatis基础使用

Mybatis基础使用步骤

1.创建数据库和表
2.创建web项目,在lib中加入需要使用的jar包。
3.创建日志文件log4j.properties,做基础日志配置。
4.创建配置文件SqlMapConfig.xml,做基础环境配置。
5.创建po类User.java
6.创建UserMapper.xml文件,编写sql语句
7.创建测试类UserTest.java

总体框架:
在这里插入图片描述
1.创建数据库和表
说明:先创建mybatis数据库

CREATE TABLE 'user' (
'id' int(11) NOT NULL AUTO_INCREMENT,
'username' varchar(32) NOT NULL COMMENT '用户名称',
'birthday' date DEFALUT NULL COMMENT '生日',
'sex' char(1) DEFALUT NULL COMMENT '性别',
'address' varchar(256) DEFALUT NULL COMMENT '地址'
PRIMAPY KEY('id')
);

2.创建web项目,在lib中加入需要使用的jar包。
在这里插入图片描述
3.创建日志文件log4j.properties,做基础日志配置。

log4j.rootLogger=DEBUG, stdout 
# Console output... 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

4.创建配置文件SqlMapConfig.xml,做基础环境配置。

"http://mybatis.org/dtd/mybatis-3-config.dtd"> 
<configuration> 
 	<!-- 和spring整合后 environments配置将废除--> 
 	<environments default="development"> 
 		<environment id="development"> 
 			<!-- 使用jdbc事务管理--> 
 			<transactionManager type="JDBC" /> 
 			<!-- 数据库连接池--> 
 			<dataSource type="POOLED"> 
				<property name="driver" value="com.mysql.jdbc.Driver" /> 
 				<property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" /> 
 				<property name="username" value="root" /> 
 				<property name="password" value="123456" />
 			</dataSource> 
 		</environment> 
	 </environments> 
	 <mappers> 
	 	<mapper resource="com/mybatis/mapper/UserMapper.xml" /> 
	</mappers> 
</configuration>

5.创建po类User.java

package com.mybatis.po;

import java.util.Date;

public class User {

	private int id;
	private String username;//用户姓名
	private String sex;//性别
	private Date birthday;//生日
	private String address;//地址
	
	public User() {
		super();
	}
	public User(int id, String username, String sex, Date birthday, String address) {
		super();
		this.id = id;
		this.username = username;
		this.sex = sex;
		this.birthday = birthday;
		this.address = address;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", username=" + username + ", sex=" + sex + ", birthday=" + birthday + ", address="
				+ address + "]";
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public Date getBirthday() {
		return birthday;
	}
	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
}

6.创建UserMapper.xml文件,编写sql语句

<?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="test"> 
	<select id="findUserById" parameterType="Integer" resultType="com.mybatis.po.User"> 
		select * from user where id = #{id} 
	</select>
	<!-- 根据名称查询用户(模糊查询) -->
	<!-- String就是java.lang.String的别名 -->
	<!-- ${}表示拼接sql串,通过${}可以将parameterType传入的内容拼接在sql -->
	<select id="findUserByName" parameterType="string" 
			resultType="com.mybatis.po.User"> 
 				select * from user 
 				where username like '%${value}%' 
	</select>
	<!-- 得到插入记录的主键keyProperty -->
	<insert id="addUser" parameterType="com.mybatis.po.User" keyProperty="id" 
useGeneratedKeys="true"> 
		insert into user(username,birthday,sex,address) 
		values(#{username},#{birthday},#{sex},#{address}) 
 
</insert>

<!-- 根据id删除用户 -->
	<delete id="deleteUserById" parameterType="int">
		delete from user where id=#{id}
	</delete>
	
	<!-- 修改数据 -->
	<update id="updateUser" parameterType="com.mybatis.po.User">
		update user set
		username=#{username},birthday=#{birthday},sex=#{sex},address=#{address}
		where id=#{id}
	</update>
</mapper> 

7.创建测试类UserTest.java
测试类说明:在进行单元测试之前,提前做一步增强。利用InputStream读取配置文件SqlMapConfig.xml。再利用SqlSessionFactoryBuilder创建SqlSessionFactory对象,即会话工厂。在测试中直接利用SqlSessionFactory对象创建SqlSession对象,利用SqlSession对象调用UserMapper.xml中的方法。

package com.mybatis.mytest;


import java.io.InputStream;
import java.util.Date;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;

import com.mybatis.po.User;

public class UserTest { 
	 
	private SqlSessionFactory sqlSessionFactory; 
 
	@Before 
	public void createSqlSessionFactory() throws Exception { 
 
		String resource = "SqlMapConfig.xml"; 
 
		// 通过流的方式将核心配置SqlMapConfig.xml文件读取进来 
		InputStream inputStream = Resources.getResourceAsStream(resource); 
		// 通过核心配置文件输入流来创建会话工厂 
		// 1.创建SqlSessionFactory 
		sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 
 } 
 
	@Test 
	public void testFindUserById() throws Exception { 
		// 怎么执行sql? 
		// 通过工厂创建会话 
		// 2.创建SqlSession 
		SqlSession session = sqlSessionFactory.openSession(); 
		// 3.使用SqlSession来执行sql语句 
		// selectOne:查询一条记录 
		// statement:指定statment的id-》哪条sql-》namespace.+id 
		User user = session.selectOne("test.findUserById", 2); 
		System.out.println(user); 
		// 4.释放资源  
		session.close(); 
	} 
}

总结:

Session是一个面向用户的接口,sqlSession中定义了数据库操作,如:查询、插入、更新、删除等。默认使用DefaultSqlSession实现类。
SqlSession对象有SqlSessionFactory类创建的,需要注意的是每个线程都有SqlSession实例。SqlSession的实例不能共享,它是线程不安全的。所以不能在Servlet中声明该对象的一个实例变量。因为Servlet是单例的,声明成实例会造成线程安全问题。也绝不将SqlSession实例对象放在一个类的静态字段或实例字段中。比如Servlet对象中的Httpsession会话。接收的对象HTTP请求时,可以打开一个SqlSession对象操作数据库,然后返回响应,就可以关闭它。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值