相关jar包:log4j,mybatis,mysql数据库驱动jar包
.数据库表里自动增长的字段id在插入时不需要操作,所以在Javabean中User的构造方法也没有id参数,在mybatis中的Mapper.xml中使用useGeneratedKey="true"表示使用的数据库自动增长策略,详情见配置文件和代码
使用mybatis进行持久化操作的基本操作:
1.开发持久化普通Java类PO和b编写持久化Mapper.xml,在其中定义要执行的SQL语句
2.通过读取mybatis-config配置文件获取SqlSessionFactory实例
3.在通过一个SqlSessionFactory对象的openSession()方法得到一个SqlSession对象实例,从而打开一个数据库会话
4.用面向对象的方法操作数据库
5提交事务,关闭SqlSession
.tb_user的sql脚本
CREATE TABLE tb_user(
ID INT(11) PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(18) DEFAULT NULL,
SEX CHAR(2) DEFAULT NULL,
AGE INT(11) DEFAULT NULL
)
package org.mybatis.domain;
/**
*
* 定义属性一般采用包装类的类型
* @author coder
*
*/
public class User {
//用户标识
private Integer id;
//用户姓名
private String name;
//用户性别
private String sex;
//用户年龄
private Integer age;
public User() {
// TODO Auto-generated constructor stub
super();
}
//自动增长型的id属性不用操作
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;
}
}
.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">
<!-- namespace指用户自定义的命名空间。 -->
<mapper namespace="org.mybatis.mapper.UserMapper">
<!--
id="save"是唯一的标示符
parameterType属性指明插入时使用的参数类型
useGeneratedKeys="true"表示使用数据库的自动增长策略
-->
<insert id="save" parameterType="org.mybatis.domain.User" useGeneratedKeys="true">
INSERT INTO TB_USER(name,sex,age)
VALUES(#{name},#{sex},#{age})
</insert>
</mapper>
.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>
<!--
<settings>
<setting name="useGeneratedKeys" value="false"/>
<setting name="useColumnLabel" value="true"/>
</settings>
<typeAliases>
<typeAlias alias="UserAlias" type="org.apache.ibatis.submitted.complex_property.User"/>
</typeAliases> -->
<!-- 指定mybatis所用日志的具体实现 LOG4J -->
<settings>
<setting name="logImpl" value="LOG4J"/>
</settings>
<!-- 环境配置及连接的数据库 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC">
<property name="" value=""/>
</transactionManager>
<dataSource type="UNPOOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<!-- 连接数据多加中文编码连接 -->
<property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis?characterEncoding=utf8"/>
<property name="username" value="root"/>
<property name="password" value=""/>
</dataSource>
</environment>
</environments>
<!-- 在哪里找持久化类的配置文件 -->
<mappers>
<mapper resource="org/mybatis/mapper/UserMapper.xml"/>
</mappers>
</configuration>
.log4j.properties配置文件用于输出mybatis的输出日志
log4j.rootLogger=DEBUG,Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
log4j.logger.org.apache=INFO
.测试类
package org.mybatis.test;
import java.io.IOException;
import java.io.Reader;
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 org.mybatis.domain.User;
public class MybatisDemo {
public static void main(String[] args) throws IOException {
// 读取mybatis-config配置文件
// 路径要从src下包的根路径下开始写(此处为org.mybatis.config包)
Reader reader = Resources.getResourceAsReader("org/mybatis/config/mybatis-config.xml");
// 初始化mybatis创建SqlSessionFaactory类的实例
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
//通过一个SqlSessionFactory打开一个数据库会话
SqlSession session=sqlSessionFactory.openSession();
User user=new User("ad","男",22);
session.insert("org.mybatis.mapper.UserMapper.save",user);
//提交事务
session.commit();
//关闭会话
session.close();
}
}
//控制台输出2018-02-02 18:58:42,363 [main] DEBUG [org.mybatis.mapper.UserMapper.save] - ==> Preparing: INSERT INTO TB_USER(name,sex,age) VALUES(?,?,?)
2018-02-02 18:58:42,405 [main] DEBUG [org.mybatis.mapper.UserMapper.save] - ==> Parameters: ad(String), 男(String), 22(Integer)
2018-02-02 18:58:42,407 [main] DEBUG [org.mybatis.mapper.UserMapper.save] - <== Updates: 1