一 、首先我们要建立maven项目
在maven项目中 建立一个实体类
java中定义使用实体类的规范用法:
①实体类的名字尽量和数据库的表的名字对应相同。
②实体类应该实现java.io.Serializable接口。
③实体类应该有个无参的构造方法。
④实体类应该有个有参(所有的参数)的构造方法。
⑤实体类有属性和方法,属性对应数据库中表的字段,并且生成getset方法。
⑥重写tostring方法
package pojo;
import java.io.Serializable;
public class User implements Serializable {
private Integer id;
private String name;
private String pwd;
private Integer role;
public User(Integer id, String name, String pwd, Integer role) {
this.id = id;
this.name = name;
this.pwd = pwd;
this.role = role;
}
public User() {
}
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 getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public Integer getRole() {
return role;
}
public void setRole(Integer role) {
this.role = role;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", pwd='" + pwd + '\'' +
", role=" + role +
'}';
}
}
二、然后在resources中创建mybatis配置文件
首先配置mybatis.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">
<!-- Mybatis核心配置文件 configuration标签-->
<configuration>
<!-- 事务 、 数据源、 映射文件 -->
<!-- 配置开发环境
default:默认的环境
-->
<!-- 配置别名 typeAliases标签-->
<typeAliases>
<!-- type为原名 alias为别名-->
<typeAlias type="pojo.User" alias="User"/>
</typeAliases>
<!-- 配置环境 environments标签-->
<!-- environments默认名随意 但是要和environment的id值相同-->
<environments default="dev">
<!--id值就是默认的环境 -->
<environment id="dev">
<!-- 配置事务管理 选择jdbc事务-->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置数据源 type:池化的-->
<dataSource type="pooled">
<!-- 配置链接数据库的基本信息-->
<!-- 配置驱动包-->
<property name="driver"
value="com.mysql.jdbc.Driver"/>
<!-- 配置sql服务器地址-->
<property name="url"
value="jdbc:mysql://localhost:3306/db_foodshopping?characterEncoding=utf-8"/>
<!-- 配置数据库账号-->
<property name="username" value="root"/>
<!-- 配置数据库密码-->
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!-- 配置映射-->
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
</configuration>
三、创建映射配置文件
创建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">
<!--映射约束-->
<!-- 映射文件,存放SQL
namespace是映射文件的唯一标志 在代码中需要被使用
-->
<!--映射标签 在这里写sql语句-->
<mapper namespace="hello">
<!-- select查询用户表的所有数据
id该SQL的唯一标志 用id才可以知道进行什么crud操作
resultType要把查询到的结果封装给哪个实体对象
-->
<select id="SelectAll"
resultType="User">
select * from users
</select>
<!--根据id删除
*id该SQL的唯一标志
*parameterType 参数类型
*获取参数的方式 mybatis的取值表达式#{变量名]
*当传入sql中的参数是一个时候,比如Integer String可以将parameterType 省略不写
*但是当传入的参数是一个对象的时候,parameterType必须写 不可以省略
-->
<delete id="deleteUser" parameterType="java.lang.Integer">
delete from users where id=#{uid}
</delete>
<select id="selectById" resultType="User">
select * from users where id=#{id}
</select>
<update id="updatebyid" parameterType="User">
update users set name=#{name},pwd=#{pwd},role=#{role} where id=#{id}
</update>
<insert id="insertUser" parameterType="User">
insert into users (id,name,pwd,role) values (#{id},#{name},#{pwd},#{role})
</insert>
</mapper>
这样mybatis配置文件就配置好了
四、在测试类中测试crud操作
package org.example;
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.junit.Test;
import pojo.User;
import javax.annotation.Resource;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class UserTest {
// 查询所有信息
@Test
public void test1() {
try {
//加载mybatis的核心配置文件
InputStream in = Resources.getResourceAsStream("mybatis/mybatis.xml");
//创建SqlSessionFactory对象
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(in);
//通过SqlSessionFactory获得SqlSession对象
SqlSession sqlSession = ssf.openSession();
List<User> users = sqlSession.selectList("hello.SelectAll");
System.out.println(users.toString());
sqlSession.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/*
*mybatis不具备自动事务操作
*事务是什么?
* 一件事情的完整过程就是事务
* JDBC具备自动事务操作
*/
@Test
public void test2(){
try {
InputStream in = Resources.getResourceAsStream("mybatis/mybatis.xml");
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(in);
//当参数为true 默认启动事务提交
SqlSession sqlSession = ssf.openSession(true);
//设置参数
Integer id=14;
//执行删除语句 返回受影响行数
int row = sqlSession.delete("hello.deleteUser", id);
//提交事务
// sqlSession.commit();
if (row>=1){
System.out.println("受影响行数为:"+row);
}else {
System.out.println("删除失败");
}
sqlSession.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/*
具体查询记录
*/
@Test
public void test3(){
try {
InputStream in = Resources.getResourceAsStream("mybatis/mybatis.xml");
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(in);
//当参数为true 默认启动事务提交
SqlSession sqlSession = ssf.openSession(true);
//设置参数
Integer id=1;
//执行选择语句 返回受影响行数
User user = sqlSession.selectOne("hello.selectById", id);
//提交事务
// sqlSession.commit();
System.out.println(user.toString());
sqlSession.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/*
修改操作
*/
@Test
public void test4(){
try {
InputStream in = Resources.getResourceAsStream("mybatis/mybatis.xml");
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(in);
//当参数为true 默认启动事务提交
SqlSession sqlSession = ssf.openSession(true);
//设置参数
User user=new User(2,"liwu","123",1);
//执行删除语句 返回受影响行数
int row = sqlSession.update("hello.updatebyid", user);
//提交事务
// sqlSession.commit();
if (row>=1){
System.out.println("受影响行数为:"+row);
}else {
System.out.println("修改失败");
}
sqlSession.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/*
增加操作
*/
@Test
public void test5(){
try {
InputStream in = Resources.getResourceAsStream("mybatis/mybatis.xml");
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(in);
//当参数为true 默认启动事务提交
SqlSession sqlSession = ssf.openSession(true);
//设置参数
User user=new User(null,"lifeifei","123",1);
//执行删除语句 返回受影响行数
int row = sqlSession.insert("hello.insertUser", user);
//提交事务
// sqlSession.commit();
if (row>=1){
System.out.println("受影响行数为:"+row);
}else {
System.out.println("添加失败");
}
sqlSession.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}