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
HistoryCharacter.java 类属性对应historycharacter表格的一条记录
MybatisUtil.java 非必须这么区分,这里只是为了使程序更清晰
<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.0modelVersion>
<groupId>com.zsbgroupId>
<artifactId>mybatisartifactId>
<version>1.0.0version>
<dependencies>
<dependency>
<groupId>org.mybatisgroupId>
<artifactId>mybatisartifactId>
<version>3.4.5version>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>5.1.41version>
dependency>
dependencies>
project>
<configuration>
<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 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>
<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>
只需要提供接口方法即可。
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);
}
对应的实体类,这里的名字我设置成了与数据库一致。实际上,数据库有数据库的命名规则,假如按照数据库的规则写字段,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 + '\'' +
'}';
}
}
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);
}
}
CREATE TABLE historycharacter
(
id INT(20) AUTO_INCREMENT
PRIMARY KEY,
firstname VARCHAR(20) NULL,
occupation VARCHAR(30) NULL,
story TEXT NULL
)
ENGINE = InnoDB;
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();
}
}
多总结,才能记得住。
这个测试很简陋,不过主要是为了记住这种思想过程。留待日后查看备忘