第一次写博客,水平有限,不喜勿喷。另外有什么不对的地方,望各路大神们指正。开始写博客的原因呢,主要有三个:一是加深对知识的理解和记忆;二是练习一下自己的文笔和逻辑(真的惨不忍睹);三就是缓解一下学到新东西后激动的心情,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类的两个方法实现相应的功能,前提是你的数据库中有数据哟。
写在最后:没经验还真是不容易些,花了好长时间而且思路不是很清晰,但好歹是完成了。感觉更像是 笔记?哈哈。。。希望会对别人有用。