mybatis简单入门案例
1.第一个案例入门
1.1目录结构
1.2配置文件
1.2.1pom.xml文件配置
<packaging>jar</packaging>
<dependencies>
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.10</version>
</dependency>
<!--mybatis核心-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!--junit测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
1.2.2mybatis-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>
<!--1.设置数据库连接环境-->
<!--环境配置:数据库的连接信息
default:必须和某个environment的id值一致,它告诉mybatis要访问哪个数据库
-->
<environments default="mydev">
<!--environment:一个数据库信息的配置,环境
id:一个唯一值,自定义,表示环境的名称
-->
<environment id="mydev">
<!--transactionManager:mybatis的事务类型
type:JDBC(表示使用jdbc中Connection对象的commit和rollback做事务处理)
-->
<transactionManager type="JDBC"/>
<!--dataSource:数据源,连接数据库的
type:表示数据源的类型,POOLED表示使用连接池
-->
<dataSource type="POOLED">
<!--数据库连接信息driver,url,username,password,都是固定值-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!--2.设置映射文件-->
<!--sql mapper(sql映射文件的位置)-->
<mappers>
<!--一个mapper标签指定一个文件的位置
要写从类路径开始的路径信息
-->
<mapper resource="mappers/UserMapper.xml"/>
</mappers>
</configuration>
1.2.3log4j.propertis配置文件,可省略
#将等级为DEBUG的日志信息输出到console和file这两个目的地,console和file的定义在下面的代码
log4j.rootLogger=DEBUG,console,file
#控制台输出的相关设置
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.Target = System.out
log4j.appender.console.Threshold=DEBUG
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%c]-%m%n
#文件输出的相关设置
log4j.appender.file = org.apache.log4j.RollingFileAppender
log4j.appender.file.File=./log/logFile.log
log4j.appender.file.MaxFileSize=10mb
log4j.appender.file.Threshold=DEBUG
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%p][%d{yy-MM-dd}][%c]%m%n
#日志输出级别
log4j.logger.org.mybatis=DEBUG
log4j.logger.java.sql=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
1.3代码编写
1.3.1创建数据库
数据库名字为mybatis,表为t_user,创建完成后保存
表单字段
1.3.2在idea里面编写Java代码
1.3.2.1编写数据库的实体类User(包名见目录结构)
package com.atguigu.mybatis.pojo;
public class User {
private Integer id;
private String username;
private String password;
private Integer age;
private String sex;
private String email;
public User(Integer id, String username, String password, Integer age, String sex, String email) {
this.id = id;
this.username = username;
this.password = password;
this.age = age;
this.sex = sex;
this.email = email;
}
public User() {
}
public Integer getId() {
return id;
}
public void setId(Integer 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 Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
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;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
", email='" + email + '\'' +
'}';
}
}
1.3.2.2创建mapper接口,进行增删改查的接口
public interface UserMapper {
/**
* 1.namespace要和mapper接口保持一致,以便查找
* 2.映射文件中sql语句的id要和mapper接口中的方法名一致
*/
/**
* 添加用户信息
*/
int insertUser();
/**
* 删除用户
*/
int deleterUser();
/**
* 修改用户
*/
int updateUser();
/**
* 查询一个实体类对象
* @return
*/
User getUserById();
/**
* 查询一个集合
*/
List<User> getUserList();
1.3.2.3创建mapper接口映射文件(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="com.atguigu.mybatis.mapper.UserMapper">
<!-- int insertUser();-->
<insert id="insertUser">
insert into t_user values (null,'admin','123456',23,'1','123456@qq.com')
</insert>
<!-- /**-->
<!-- * 删除用户-->
<!-- */-->
<!-- int deleterUser();-->
<delete id="deleterUser">
delete from t_user where id=3
</delete>
<!-- /**-->
<!-- * 修改用户-->
<!-- */-->
<!-- int updateUser();-->
<update id="updateUser">
update t_user set sex='0' where id=4
</update>
<!-- /**-->
<!-- * 查询一个实体类对象-->
<!-- * @return-->
<!-- */-->
<!-- User getUserById();-->
<select id="getUserById" resultType="com.atguigu.mybatis.pojo.User">
select * from t_user where id=5
</select>
<!-- /**-->
<!-- * 查询一个集合-->
<!-- */-->
<!-- List<User> getUserList();-->
<select id="getUserList" resultType="com.atguigu.mybatis.pojo.User">
select * from t_user
</select>
</mapper>
1.3.2.4测试(MybatisTest.java)
public class MyBatisTest {
@Test
public void testMybatis() throws IOException {
//读取MyBatis的核心配置文件
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
//创建SqlSessionFactoryBuilder对象
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
//通过核心配置文件所对应的字节输入流创建工厂类SqlSessionFactory,生产SqlSession对象
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
//创建SqlSession对象,此时通过SqlSession对象所操作的sql都必须手动提交或回滚事务
//SqlSession sqlSession = sqlSessionFactory.openSession();
//创建SqlSession对象,此时通过SqlSession对象所操作的sql都会自动提交
SqlSession sqlSession = sqlSessionFactory.openSession(true);
//通过代理模式创建UserMapper接口的代理实现类对象
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
//调用UserMapper接口中的方法,就可以根据UserMapper的全类名匹配元素文件,通过调用的方法名匹配映射文件中的SQL标签,并执行标签中的SQL语句
//1.增加操作
// int result = userMapper.insertUser();
// System.out.println(result);
//2.删除操作
// int i = userMapper.deleterUser();
// System.out.println(i);
//3.更新操作
// int updateUser = userMapper.updateUser();
// System.out.println(updateUser);
//4.查询单个对象操作
// User userById = userMapper.getUserById();
// System.out.println(userById);
//5.查询多个对象操作
List<User> userList = userMapper.getUserList();
System.out.println(userList);
}
}