运用MyBatis查询mysql数据库中的信息

第一次写博客,水平有限,不喜勿喷。另外有什么不对的地方,望各路大神们指正。开始写博客的原因呢,主要有三个:一是加深对知识的理解和记忆;二是练习一下自己的文笔和逻辑(真的惨不忍睹);三就是缓解一下学到新东西后激动的心情,hiahiahia~,当然也可以让自己沉淀下来。

一次偶然的情况下听到了SSM(Spring、SpringMVC、Mybatis)框架(原谅我的无知,而且我到现在都不知道是干什么的偷笑,但是不影响我发博文),于是到处百度有关的视频,最后选择了这一个java教程|Springmvc+Mybatis由浅入深全套视频。第一天观看的内容如下。 

mybatis的整个流程如图所示

目前的工程内容如图所示


1、首先创建java工程

2、加入jar包:mybatis核心包、mybatis依赖包、数据库驱动包。

3、在classpath下创建log4j.properties文件

# Global logging configuration
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全局映射文件

dataSource里面的内容为mysql数据库的信息,根据自己的数据库进行配置

<?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>
	<!-- 和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="" />
			</dataSource>
		</environment>
	</environments>
</configuration>

5、声明一个类,作为映射输出结果的类型。

以user类为例,类中各属性应与数据库表中字段名相对应。

public class User {
	//属性名和数据库字段名对应
	private int id;
	private String username;// 用户姓名
	private String sex;// 性别
	private Date birthday;// 生日
	private String address;// 地址
	
	//get和set
	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;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", username=" + username + ", sex=" + sex
				+ ", birthday=" + birthday + ", address=" + address + "]";
	}
	
}

6、

(1)在sqlmap目录下编写User.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="test">

</mapper>

注:namespace:命名空间,用于隔离sql语句

(2)向User.xml中的<mapper></mapper>标签中添加sql语句

<!-- 根据id获取信息 -->
<!-- parameterType:指定输入参数的类型     resultType:指定输出结果的类型     #{}:表示一个占位符-->
<select id="FindUserById" parameterType="int" resultType="pojo.User">
	select * from user where id=#{value}
</select>

<!-- 根据用户名模糊查询用户信息 -->
<!--${}:表示拼接字符串   将接收到的内容不加任何修饰拼接到sql语句中-->
<select id="FindUserByName" parameterType="java.lang.String" resultType="pojo.User">
	select * from user where username like "%${value}%"
</select>
7、在全局映射SqlMapConfig.xml中加载映射文件

<!-- 加载映射文件 -->
<mappers>
	<mapper resource="sqlmap/User.xml"/>
</mappers>

8、编写测试程序

在first包下创建名为MybatisFirst类

import java.io.IOException;
import java.io.InputStream;
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.Test;

import pojo.User;

/**
 * 入门程序
 * @author lenovo
 *
 */
public class MybatisFirst {
	//根据id获取一条用户信息
	@Test
	public void findUserByIdTest() throws IOException{
		//mybatis配置文件
		String resource = "SqlMapConfig.xml"; 
		//得到配置文件流
		InputStream inputStream = Resources.getResourceAsStream(resource);
		//创建会话工程
		SqlSessionFactory SqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		//通过工厂创建sqlSession
		SqlSession sqlSession = SqlSessionFactory.openSession();
		//通过Session操作数据库
		User user = sqlSession.selectOne("test.FindUserById",1);
		System.out.println(user);
		//释放资源
		sqlSession.close();
	}
	//根据用户名来模糊查询用户列表
	@Test
	public void findUserByNameTest() throws IOException {
		//mybatis配置文件
		String resource = "SqlMapConfig.xml"; 
		//得到配置文件流
		InputStream inputStream = Resources.getResourceAsStream(resource);
		//创建会话工程
		SqlSessionFactory SqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		//通过工厂创建sqlSession
		SqlSession sqlSession = SqlSessionFactory.openSession();
		//通过sqlSession访问数据库
		List<User> list = sqlSession.selectList("test.FindUserByName","小明");
		
		System.out.println(list);
		sqlSession.close();
		
	}
}

两个方法结构相同,selectOne用于获取一条信息,可以用selectList代替(此时list中只有一条信息);selectList 用于获取一列(一条或多条)信息,不可用selectOne代替。

到此,整个流程已经结束了,可以通过调用 MybatisFirst类的两个方法实现相应的功能,前提是你的数据库中有数据哟。






写在最后:没经验还真是不容易些,花了好长时间而且思路不是很清晰,但好歹是完成了。感觉更像是 笔记?哈哈。。。希望会对别人有用。










  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值