方便回顾和加强记忆,记录一下mybatis的使用方法。mybatis的官网文档:http://www.mybatis.org/mybatis-3/zh/getting-started.html。
目录
7、添加users表sql的映射文件userMapper.xml
1、创建数据库
创建数据库和表。
create database mybatis;
use mybatis;
CREATE TABLE c_user(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(32), age INT);
2、创建maven项目
具体流程查看IDEA创建基本maven项目。
为了之后理解项目结构,提前把最终的目录贴出来
3、导入需要的依赖包
在pom.xml导入mybatis和mysql的依赖包,这样就不需要自己导入包。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>czz.study</groupId>
<artifactId>mybatis</artifactId>
<version>1.0-SNAPSHOT</version>
<name>mybatis</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!--Mybatis依赖包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.2</version>
</dependency>
<!--Mysql驱动包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
<!--junit测试依赖包-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.0.0</version>
</plugin>
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20.1</version>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
4、创建Mybatis配置文件conf.xml
XML 配置文件(configuration XML)中包含了对 MyBatis 系统的核心设置,包含获取数据库连接实例的数据源(DataSource)和决定事务作用域和控制方式的事务管理器(TransactionManager)。在src下创建一个conf.xml文件,如下图所示。这里目前只添加了数据源相关的配置(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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
<property name="username" value="root"/>
<property name="password" value="Jovaunn1"/>
</dataSource>
</environment>
</environments>
</configuration>
5、创建实体类
创建表对应实体类,并添加set/get/toString相关方法:
package czz.study.domain;
import java.io.Serializable;
public class User implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id 主键id
*/
private Integer id;
/**
* name 名字
*/
private String name;
/**
* age 年龄
*/
private Integer 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 Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "User{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + '}';
}
}
6、创建UserMapper.java
在mapper包内创建UserMapper.java,并添加需要的功能接口,现在只演示简单的增删改查功能。
package czz.study.mapper;
import czz.study.domain.User;
import org.apache.ibatis.annotations.Param;
public interface UserMapper {
/**
* 根据主键id查询用户信息
*/
User getUser(int id);
/**
* 新增用户信息
*/
boolean insertUser(User user);
/**
* 更新主键id对应的用户信息
*/
//@Param注解的作用是给参数命名,参数命名后就能根据名字得到参数值,正确的将参数传入sql语句中
//如果不加,程序会出现找不到user异常
boolean updateUser(@Param("id") int id, @Param("user") User user);
/**
* 删除主键id对应的用户信息
*/
boolean deleteUser(int id);
}
7、添加users表sql的映射文件userMapper.xml
userMapper.xml包含UserMapper功能相关的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,namespace的值习惯上设置成包名+功能接口映射文件名,这样就能够保证namespace的值是唯一的
例如namespace="czz.study.Mapper.UserMapper"就是czz.study.Mapper(包名)+UserMapper
-->
<mapper namespace="czz.study.mapper.UserMapper">
<resultMap id="User" type="czz.study.domain.User">
<id property="id" column="id" javaType="java.lang.Integer"></id>
<result property="userName" column="name" javaType="java.lang.String"></result>
<result property="age" column="age" javaType="java.lang.Integer"></result>
</resultMap>
<!--根据id查询得到一个user对象-->
<select id="getUser" parameterType="int" resultMap="User">
select * from c_user where id = #{id}
</select>
<!--新增一个新的用户-->
<insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
insert into c_user (name,age) values (#{userName},#{age})
</insert>
<!--更新id对应的用户信息-->
<update id="updateUser">
update c_user set name=#{user.userName},age=#{user.age} where id=#{id}
</update>
<!--删除id对应的用户信息-->
<delete id="deleteUser" parameterType="int">
delete from c_user where id=#{id}
</delete>
</mapper>
8、在conf.xml注册userMapper.xml
秩序在conf.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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
<property name="username" value="root"/>
<property name="password" value="Jovaunn1"/>
</dataSource>
</environment>
</environments>
<mappers>
<!--告知映射文件方式1,一个一个的配置-->
<mapper resource="mapperXml/userMapper.xml"/>
<!-- 告知映射文件方式2,自动扫描包内的Mapper接口与配置文件
注意:此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。-->
<!--<package name="czz.study.mapper"/>-->
<!--告知映射文件方式3,一个一个的配置-->
<!--注意:此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。-->
<!--<mapper class="czz.study.mapper.UserMapper"/>-->
</mappers>
</configuration>
9、创建SqlSessionFactory工具类
package czz.study.factory;
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 java.io.Reader;
public class MybatisFactory {
public static SqlSessionFactory sessionFactory;
static {
try {
//使用MyBatis提供的Resources类加载mybatis的配置文件
InputStream inputStream = Resources.getResourceAsStream("conf.xml");
//构建sqlSession的工厂
sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 获取SqlSession
*/
public static SqlSession getSession() {
return sessionFactory.openSession();
}
}
10、代码测试
在main方法中测试增删改查功能
package czz.study;
import czz.study.domain.User;
import czz.study.factory.MybatisFactory;
import czz.study.mapper.UserMapper;
import org.apache.ibatis.session.SqlSession;
/**
* Hello world!
*/
public class App {
public static void main(String[] args) {
SqlSession sqlSession = MybatisFactory.getSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User insertUser = new User();
insertUser.setName("小花");
insertUser.setAge(33);
userMapper.insertUser(insertUser);
sqlSession.commit();
System.out.println("新增用户id:" + insertUser.getId());
System.out.println("----------------------------------------------------------------");
User user = userMapper.getUser(insertUser.getId());
System.out.println("查询用户信息:" + user);
System.out.println("----------------------------------------------------------------");
User updateUser = new User();
updateUser.setName("小黑");
updateUser.setAge(44);
userMapper.updateUser(insertUser.getId(), updateUser);
System.out.println("查询更新后的用户信息:" + userMapper.getUser(insertUser.getId()));
sqlSession.commit();
System.out.println("----------------------------------------------------------------");
userMapper.deleteUser(insertUser.getId());
sqlSession.commit();
System.out.println("删除用户后查询结果:" + userMapper.getUser(insertUser.getId()));
sqlSession.close();
}
}
以上,就是Mybatis最基本的用法,Mybatis其他功能和注意事项之后继续补充。放上某一次运行的结果。