环境
Intellij idea
MySQL
环境搭建及依赖
依赖引入
1.mybatis mybatis包
2.mysql-connector-java mysql数据库JDBC驱动
配置文件
1.pom.xml maven配置文件
2.mybatis-config.xml mybatis配置文件
3.characterMapper.xml mybatis里的mapper映射配置文件。名字自己起的。
接口
characterMapper mybatis里只需要定义接口,会动态为我们生成实现类
表格
historycharacter
entity实体类
HistoryCharacter.java 类属性对应historycharacter表格的一条记录
工具类
MybatisUtil.java 非必须这么区分,这里只是为了使程序更清晰
目录结构
整体过程
pom.xml
<?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>com.zsb</groupId>
<artifactId>mybatis</artifactId>
<version>1.0.0</version>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<!--添加mybatis依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<!--jdbc驱动-->
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.41</version>
</dependency>
</dependencies>
</project>#
<?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>
<!-- 实际上会将这些数据库相关的设置写入一个jdbc.properties配置文件里 -->
<properties>
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/zsb" />
<property name="username" value="root" />
<property name="password" value="123456" />
</properties>
<environments default="development">
<!-- 每个environment 对应一个 SqlSessionFactory -->
<environment id="development">
<transactionManager type="JDBC" />
<!--支持数据源-->
<dataSource type="POOLED">
<property name="driver" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="characterMapper.xml"/>
</mappers>
</configuration>characterMapper.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.zsb.mapper.CharacterMapper">
<!--增加-->
<insert id="incCharacter" parameterType="com.zsb.entity.HistoryCharacter" useGeneratedKeys="true" keyProperty="id" >
INSERT INTO historycharacter(firstname,occupation,story) VALUES (#{firstname},#{occupation},#{story})
</insert>
<!--删除-->
<delete id="deleteCharacter" parameterType="int" >
DELETE FROM historycharacter WHERE id = #{id}
</delete>
<!--改-->
<update id="updateCharacter" parameterType="com.zsb.entity.HistoryCharacter">
UPDATE historycharacter SET firstname = #{firstname}, occupation = #{occupation}, story = #{story} WHERE id = #{id}
</update>
<!--查询-->
<select id="getCharacter" parameterType="int" resultType="com.zsb.entity.HistoryCharacter">
select * from historycharacter WHERE id= #{id}
</select>
</mapper>CharacterMapper.java
只需要提供接口方法即可。
package com.zsb.mapper;
import com.zsb.entity.HistoryCharacter;
public interface CharacterMapper {
HistoryCharacter getCharacter(int id);
void deleteCharacter(int id);
void incCharacter(HistoryCharacter historyCharacter);
void updateCharacter(HistoryCharacter historyCharacter);
}HistoryCharacter.java
对应的实体类,这里的名字我设置成了与数据库一致。实际上,数据库有数据库的命名规则,假如按照数据库的规则写字段,java类的属性命名也按照java规则,也可以进行设置后自动转换。这就是规范的魅力。
package com.zsb.entity;
public class HistoryCharacter {
private int id;
private String firstname;
private String occupation;
private String story;
public int getId() { return id;}
public void setId(int id) {this.id = id;}
public String getName() {return firstname;}
public void setName(String firstname) { this.firstname = firstname;}
public String getOccupation() { return occupation;}
public void setOccupation(String occupation) { this.occupation = occupation;}
public String getStory() {return story;}
public void setStory(String story) {this.story = story;}
@Override
public String toString() {
return "HistoryCharacter{" +
"id=" + id +
", name='" + firstname + '\'' +
", occupation='" + occupation + '\'' +
", story='" + story + '\'' +
'}';
}
}
MybatisUtil.java
package com.zsb.util;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
//需要返回一个SqlSessionFactroy对象
public class MybatisUtil {
public static SqlSessionFactory getSqlSessionFactory(){
String resources = "mybatis-config.xml";
InputStream inputStream = null;
//通过xml文件生成一个SqlSessionFactory对象
//我们要借助输入流
try {
inputStream = Resources.getResourceAsStream(resources);
} catch (IOException e) {
e.printStackTrace();
}
return new SqlSessionFactoryBuilder().build(inputStream);
}
}表格
sql
CREATE TABLE historycharacter
(
id INT(20) AUTO_INCREMENT
PRIMARY KEY,
firstname VARCHAR(20) NULL,
occupation VARCHAR(30) NULL,
story TEXT NULL
)
ENGINE = InnoDB;这里是Intellij idea里查看的样式
测试
import com.zsb.mapper.CharacterMapper;
import com.zsb.entity.HistoryCharacter;
import com.zsb.util.MybatisUtil;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
public class Main {
public static void main(String[] args) {
SqlSessionFactory sqlSessionFactory = null;
//通过我们的工具类获得了SqlSessinoFactoryD对象
sqlSessionFactory = MybatisUtil.getSqlSessionFactory();
//获得SqlSession对象
//自动提交:只需要在openSession方法上填上true即可。默认需要手动提交。
SqlSession sqlSession = sqlSessionFactory.openSession();
//获得一个CharacterMapper接口的实例
CharacterMapper characterMapper = sqlSession.getMapper(CharacterMapper.class);
//查询数据
//通过SqlSession对象,以及CharacterMapper接口,生成一个该接口的实例对象
HistoryCharacter historyCharacter = sqlSession.getMapper(CharacterMapper.class).getCharacter(1);
System.out.println(historyCharacter);
//更新数据
//HistoryCharacter historyCharacter2 = new HistoryCharacter();
//historyCharacter2.setId(1);
//historyCharacter2.setName("刘备");
//historyCharacter2.setOccupation("蜀国主公");
//historyCharacter2.setStory("三英战吕布");
//sqlSession.getMapper(CharacterMapper.class).updateCharacter(historyCharacter2);
//System.out.println(historyCharacter2);
//增加数据
//HistoryCharacter historyCharacter2 = new HistoryCharacter();
//historyCharacter2.setId(1);
//historyCharacter2.setName("关羽");
//historyCharacter2.setOccupation("蜀国大将");
//historyCharacter2.setStory("三英战吕布,水淹七军");
//characterMapper.incCharacter(historyCharacter2);
//删除数据
//characterMapper.deleteCharacter(4);
//手动提交更改
sqlSession.commit();
}
}测试结果
总结
多总结,才能记得住。
这个测试很简陋,不过主要是为了记住这种思想过程。留待日后查看备忘
版权声明:本文为zsbgood原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。