本篇文章主要讲解的是Mybatis的入门,包括MyBatis的环境搭建,基础知识点,以及使用MyBatis完成最基础的增删改查的操作。
1.MyBatis的环境搭建
首先搭建项目结构,如图所示,新建项目MyBatisDemo
引入MyBatis的jar包 mybatis-3.4.6.jar ,引入mysql的数据库连接包 mysql-connector-java-5.17-bin.jar,为了观察方便,引入log4j-1.2.17.jar。接下来编写jdbc.properties和log4j.properties文件的内容如下图所示
jdbc.properties
log4j.properties
使用mysql数据库新建名为mybatis的数据库,之后创建表tb_user
CREATE TABLE `tb_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(18) DEFAULT NULL,
`sex` char(2) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8
2.创建核心控制文件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 -->
<configuration>
<!--properties标签,引入jdbc.properties文件 -->
<properties resource="jdbc.properties"/>
<!--settings标签,用来设置数据库的加载方式以及配置log4j -->
<settings>
<setting name="lazyLoadingEnabled" value="false" />
<setting name="logImpl" value="LOG4J"/>
</settings>
<!--环境配置,即数据源的配置,environments标签下可以配置多个environment,每个环境使用id进行标识,default属性必须选择一个存在的environment的id,这里使用的jdbc的数据源 -->
<environments default="development">
<environment id="development">
<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.xml -->
<mappers>
<mapper resource="cn/com/houzi/mapper/UserMapper.xml" />
</mappers>
</configuration>
3.创建普通的pojo类
package cn.com.houzi.pojo;
/*
* @author xiaolieren
* @date 2018年9月30日 上午10:48:35
* @version 1.0
*/
public class User {
private Integer id;
private String name;
private String sex;
private Integer age;
public User() {}
public User(String name,String sex,Integer age) {
super();
this.name = name;
this.sex = sex;
this.age = age;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "User "+"[id="+id+",name="+name+",sex="+sex+",age="+age+"]";
}
}
4.创建UserMapper.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="cn.com.houzi.mapper.UserMapper">
<insert id="saveUser" parameterType="cn.com.houzi.pojo.User" useGeneratedKeys="true">
INSERT INTO TB_USER(name,sex,age) VALUES (#{name},#{sex},#{age})
</insert>
<select id="selectUser" resultMap="userResultMap">
SELECT * FROM TB_USER
</select>
<!--id表示数据库的主键,coloumn表示数据库表的列名,property表示数据库列映射到返回类型的属性,即pojo类的属性 -->
<resultMap type="cn.com.houzi.pojo.User" id="userResultMap">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="sex" column="sex"/>
<result property="age" column="age"/>
</resultMap>
<!--根据id查询数据 -->
<select id="selectOne" parameterType="int" resultType="cn.com.houzi.pojo.User">
SELECT * FROM TB_USER WHERE id=#{id}
</select>
<update id="modifyUser" parameterType="cn.com.houzi.pojo.User">
UPDATE TB_USER SET name=#{name},sex=#{sex},age=#{age} WHERE id=#{id}
</update>
<delete id="deleteUser" parameterType="cn.com.houzi.pojo.User">
DELETE FROM TB_USER WHERE id=#{id}
</delete>
</mapper>
5.创建测试类MyBatisTest
package cn.com.houzi.test;
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 cn.com.houzi.pojo.User;
/*
* @author xiaolieren
* @date 2018年9月30日 上午11:35:27
* @version 1.0
*/
public class MybatisTest {
public static void main(String[] args) {
try {
//加载配置文件,获取sqlSessionFactory,创建sqlSession对象
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlsession = sqlSessionFactory.openSession();
//1.测试插入一条数据
/*User user = new User("rose","女",18);
sqlsession.insert("cn.com.houzi.mapper.UserMapper.saveUser", user);*/
//2.测试查询所有的数据
/*List<User> userList = sqlsession.selectList("cn.com.houzi.mapper.UserMapper.selectUser");
for(User user:userList) {
System.out.println(user.toString());
}*/
//3.测试修改一条数据
/*User user = sqlsession.selectOne("cn.com.houzi.mapper.UserMapper.selectOne",1);
System.out.println(user.toString());
user.setName("admin1");
user.setSex("女");
user.setAge(19);
sqlsession.update("cn.com.houzi.mapper.UserMapper.modifyUser", user);*/
//4.测试删除一条数据
//sqlsession.delete("cn.com.houzi.mapper.UserMapper.deleteUser",3);
sqlsession.commit();
sqlsession.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
至此mybatis的基本用法已经介绍完成。本文主要通过单表的进行了对mybatis基本用法的演示,讲解了基本的语法,然后进行了增删改查的简单实现