一、简介
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。
二、入门使用
1.使用maven管理依赖
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
<resources>
<resource>
<directory>src/main/java</directory>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<classesDirectory>target/classes/</classesDirectory>
<archive>
<addMavenDescriptor>true</addMavenDescriptor>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.wyh.Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.10</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.5.5</version>
<configuration>
<archive>
<manifest>
<mainClass>com.wyh.Main</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
2.在resources下创建application.xml和jdbc.properties
2.1 application.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>
<properties resource="jdbc.properties"></properties>
<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>
<!--生产模式下-->
<environment id="product">
<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 resource="com/wyh/mapper/UserMapper.xml"/>
</mappers>
</configuration>
2.2 jdbc.properties
jdbc_driver=com.mysql.jdbc.Driver
jdbc_url=jdbc\:mysql\://127.0.0.1:3306/stu?characterEncoding=utf-8&useSSL=true
jdbc_username=root
jdbc_password=123456
3.建立pojo的包,建立User实体类
public class User {
private Integer id;
private String name;
private String data;
public User() {
}
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 getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", data='" + data + '\'' +
'}';
}
}
4.建立mapper包
4.1建立UserMapper接口
public interface UserMapper {
public User selectUserById(Integer userId);
public List<User> selectUserAll();
public void insertUser(User user);
public void updateUser(User user);
}
4.2建立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="com.wyh.mapper.UserMapper">
<!--设置domain类和数据库中表的字段一一对应,注意数据库字段和domain类中的字段名称不致,此处一定要!-->
<resultMap id="BaseResultMap" type="com.wyh.pojo.User">
<id column="ID" property="id" jdbcType="INTEGER" />
<result column="NAME" property="name" jdbcType="CHAR" />
<result column="DATA" property="data" jdbcType="CHAR" />
</resultMap>
<!-- 查询单条记录 -->
<select id="selectUserById" parameterType="int" resultMap="BaseResultMap">
SELECT * FROM student WHERE ID = #{id}
</select>
<!-- 查询所有记录 -->
<select id="selectUserAll" resultMap="BaseResultMap">
SELECT * FROM student
</select>
<!-- 插入单条记录 -->
<insert id="insertUser" parameterType="com.wyh.pojo.User">
insert into student (id,name,data)
values (#{id},#{name},#{data})
</insert>
<update id="updateUser" parameterType="com.wyh.pojo.User">
update student
<set >
<if test="data != null" >
data = #{data ,jdbcType=CHAR}
</if>
,<if test="name != null" >
name = #{name ,jdbcType=CHAR}
</if>
</set>
where id = #{id}
</update>
</mapper>
5.建立utils包,并建立UpdateDB类
public class UpdateDB {
public static void updateDB(User user) {
SqlSession session = null;
try {
// 读取配置信息
String resource = "application.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
// 选择不同的环境
String env = "product";
SqlSessionFactory factory = builder.build(inputStream,env);
// 产生SqlSession对象
session = factory.openSession();
System.out.println(session);
// 获取映射对象
UserMapper userMapper = session.getMapper(UserMapper.class);
// 获取id为1的账户
//User user = userMapper.selectUserById(1);
//System.out.println(user);
// 获取所有账户
List<User> arrayList = userMapper.selectUserAll();
System.out.println("before:" + arrayList);
//更新数据
userMapper.updateUser(user);
session.commit();
// 获取所有账户
arrayList = userMapper.selectUserAll();
System.out.println("after"+arrayList);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (session != null)
// 关闭连接
session.close();
}
}
}
6.测试程序
建立主类
public class Main {
public static void main(String[] args) {
User user = new User();
user.setId(1);
user.setName("zhangsan");
user.setData("100");
UpdateDB.updateDB(user);
}
}
运行测试,如下图
![](https://img.haomeiwen.com/i6522183/35207566bf2a37ff.jpg)
网友评论