首先创建表:建表Sql文件
-- 导出 mybatis 的数据库结构
CREATE DATABASE IF NOT EXISTS `mybatis` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `mybatis`;
-- 导出 表 mybatis.t_user 结构
CREATE TABLE IF NOT EXISTS `t_user` (
`username` varchar(50) DEFAULT NULL,
`password` varchar(50) DEFAULT NULL,
`nickname` varchar(50) DEFAULT NULL,
`type` tinyint(4) DEFAULT NULL,
`id` int(10) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
1、创建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> <properties resource="jdbc.properties" /> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <!-- 配置mybatis的pooled的数据源 --> <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="edu/hhxy/btais/User.xml"/><!--加载mapper文件--> </mappers> </configuration>
src/jdbc.properties
2、根据数据表创建相应的实体类
Address.java
package edu.hhxy.btais; public class Address { private int id; private String name; private String phone; private String postcode; private User user; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public String getPostcode() { return postcode; } public void setPostcode(String postcode) { this.postcode = postcode; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } }
User.java
package edu.hhxy.btais; import java.util.List; public class User { private int id; private String username; private String password; private String nickname; private int type; private List<Address> addresses; public List<Address> getAddresses() { return addresses; } public void setAddresses(List<Address> addresses) { this.addresses = addresses; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } public int getType() { return type; } public void setType(int type) { this.type = type; } }
3、创建mapper文件完成对实体类的映射,该文件同样是xml的文件
User.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="edu.hhxy.btais.User"><!--名称空间--> <insert id="add" parameterType="edu.hhxy.btais.User"><!--全类名 包名+类名--> insert into t_user (username,password,nickname,type) value(#{username},#{password},#{nickname},#{type}) </insert> </mapper>
4、创建SQlSession,并且通过SqlSession完成对数据库的操作
package edu.hhxy.btais.test; import java.io.IOException; import java.io.InputStream; 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 edu.hhxy.btais.User; public class TestFirstMybatis { public static void main(String[] args) { try { // 1、创建配置文件(mybatis-config.xml)的输入流 InputStream is = Resources .getResourceAsStream("mybatis-config.xml"); System.out.println(is.available()); // 2、创建SQLSessionFactory SqlSessionFactory factory = new SqlSessionFactoryBuilder() .build(is); // 3、创建SQLSessioin SqlSession session = factory.openSession(); // 4、调用mapper文件插入数据(调用之前需要将mapper文件加入到mybatis-config.xml中) User u = new User(); u.setNickname("孙悟空"); u.setPassword("123"); u.setType(0); u.setUsername("wukong"); session.insert("edu.hhxy.btais.User.add", u); session.commit();//别忘了提交 session.close(); } catch (IOException e) { e.printStackTrace(); } } }
5、最佳实践
1、创建相应的MyBatisUtil完成对Session的获取
2、不使用annotation完成sql的映射