今天初步学习了下myBatis框架,现在把学习过程总结下。
一、创建数据库表。
01.DROP TABLE IF EXISTS `tb_user`;
02.CREATE TABLE `tb_user` (
03. `id` int(10) NOT NULL AUTO_INCREMENT,
04. `username` varchar(40) DEFAULT NULL,
05. `password` varchar(40) DEFAULT NULL,
06. `email` varchar(40) DEFAULT NULL,
07. `age` int(10) DEFAULT NULL,
08. `sex` char(2) DEFAULT NULL,
09. PRIMARY KEY (`id`)
10.) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
二、创建项目
1、项目结构图
2、创建实体类User
package com.firstbatis.entity;
public class User {
private int id;
private String username;
private String password;
private String sex;
private String email;
private int age;
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 getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
3、创建UserDao接口(基于Annotation)
package com.firstbatis.dao;
import java.util.List;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import com.firstbatis.entity.User;
public interface UserDao {
@Insert("insert into tb_user(username,password,email,age,sex) values(#{username},#{password},#{email},#{age},#{sex})")
public int insert(User user);
@Update("update tb_user set username=#{username},password=#{password},email=#{email},sex=#{sex},age=#{age} where username=#{username}")
public int update(User user);
@Delete("delete from tb_user where username=#{username}")
public int delete(String username);
@Select("select * from tb_user ")
public List<User> selectAll();
@Select("select count(*) from tb_user")
public int countAll();
@Select("select * from tb_user where username=#{username}")
public User findByUserName(String userName);
}
4、创建MyBatis-Configuration.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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/bk_shop?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
</configuration>
5、创建辅助类(单例模式)
package com.firstbatis.util;
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 com.firstbatis.dao.UserDao;
public class DBHelper {
private static DBHelper dbHelper = new DBHelper();
private SqlSessionFactory sqlSessionFactory = null;
private DBHelper(){
try{
String resource ="MyBatis-Configuration.xml";
Reader reader = Resources.getResourceAsReader(resource);
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
sqlSessionFactory = builder.build(reader);
sqlSessionFactory.getConfiguration().addMapper(UserDao.class);
} catch(IOException e){
e.printStackTrace();
}
}
public static DBHelper getInstance(){
return dbHelper;
}
public SqlSession getSqlSession(){
return sqlSessionFactory.openSession();
}
}
6、创建主测试类
package com.firstbatis.test;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import com.firstbatis.dao.UserDao;
import com.firstbatis.entity.User;
import com.firstbatis.util.DBHelper;
public class MybatisHandler {
public static void main(String[] args) throws Exception{
SqlSession session = DBHelper.getInstance().getSqlSession();
UserDao userDao = session.getMapper(UserDao.class);
User user = new User();
user.setUsername("zhaozp");
user.setPassword("test1234");
user.setEmail("xxxx@qq.com");
user.setSex("男");
user.setAge(24);
userDao.insert(user);
System.out.println("数据库中的记录数:" +userDao.countAll());
User usn = userDao.findByUserName("zhaozp");
if(usn!=null){
System.out.println("检索用户信息["+usn.getId()+","
+ usn.getUsername()+","
+ usn.getPassword()+","
+ usn.getEmail()+","
+ usn.getAge()+","
+ usn.getSex());
}
User updUser = new User();
updUser.setUsername("chensh");
updUser.setPassword("update");
updUser.setEmail("zzp@163.com");
updUser.setSex("女");
updUser.setAge(26);
List<User> list = userDao.selectAll();
for(int i=0;i<list.size();i++){
User us=list.get(i);
System.out.println("用户信息"+i+"["+us.getId()+","
+ us.getUsername()+","
+ us.getPassword()+","
+ us.getEmail()+","
+ us.getAge()+","
+ us.getSex());
}
userDao.delete("zhaozp");
System.out.println("执行删除后数据库中的记录数:" + userDao.countAll());
session.commit();
}
}