package com.itzheng.mybatis.pojo;
import java.util.Date;
public class User {
private Integer id;
private String username;// 用户姓名
private String sex;// 性别
private Date birthday;// 生日
private String address;// 地址
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 getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return “User [id=” + id + “, username=” + username + “, sex=” + sex + “, birthday=” + birthday + “, address=”
- address + “]”;
}
}
6.配置sql查询的映射文件
创建user.xml
7.SqlMapConfig.xml当中加载映射文件
三、完成需求(增删改查)
1、根据用户ID查询用户信息
(1)编写SQL语句
SELECT id,
username,
birthday,
sex,
address
FROM user
WHERE id = 1
(2)配置user映射文件:修改user.xml
SELECT * FROM USER WHERE id = #{id1}
(3)编写测试程序:创建MybatisTest类
package com.itzheng.mybatis.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 org.junit.Test;
import com.itzheng.mybatis.pojo.User;
public class MybatisTest {
@Test
public void testGetUserById() throws IOException {
// 加载配置文件,创建SqlSessionFactoryBuilder
SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
// 创建核心配置文件的输入流
InputStream inputStream = Resources.getResourceAsStream(“SqlMapConfig.xml”);
// 通过输入流创建sqlSessionFactory对象
SqlSessionFactory sqlSessionFactory = ssfb.build(inputStream);
// 创建SqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
// 执行查询,参数一SQL id 参数二,入参
User user = (User) sqlSession.selectOne(“user.getUserByid”, 1);
//输出查询到的对象
System.out.println(user);
//释放资源
sqlSession.close();
}
}
2、根据用户名模糊查询用户列表
方式一
(1)编写SQL语句
SELECT id,
username,
birthday,
sex,
address
FROM user
WHERE username LIKE ‘%张%’
(2)配置user映射文件:修改user.xml
SELECT id,username,birthday,sex,address FROM user
WHERE username LIKE #{name}
(3)编写测试程序:创建SqlSessionFactoryUtils抽取加载配置文件以及查询数据库的内容
package com.itzheng.mybatis.jdbc.utils;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
/*
- SqlSessionFactory工具类
*/
public class SqlSessionFactoryUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
// 加载配置文件,创建SqlSessionFactoryBuilder
SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
// 创建核心配置文件的输入流
InputStream inputStream;
inputStream = Resources.getResourceAsStream(“SqlMapConfig.xml”);
// 通过输入流创建sqlSessionFactory对象
sqlSessionFactory = ssfb.build(inputStream);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/*
- 获取sqlSessionFactory
*/
public static SqlSessionFactory getSqlSessionFactory() {
return sqlSessionFactory;
}
}
(4) 在SqlSessionFactoryUtils当中的testGetUserByUserName()方法,方式一
@Test
public void testGetUserByUserName() {
// 获取sqlSessionFactory
SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtils.getSqlSessionFactory();
// 创建SqlSession
SqlSession openSession = sqlSessionFactory.openSession();
List selectList = openSession.selectList(“user.getUserByUserName”, “%张%”);
for (User user : selectList) {
System.out.println(user);
}
// 释放资源
openSession.close();
}
方式二
(1)修改user.xml :使用字符串拼接指令${}
:字符串拼接指令,如果入参为普通数据类型{}内部只能写value
(2)修改MybatisTest的testGetUserByUserName方法
@Test
public void testGetUserByUserName() {
// 获取sqlSessionFactory
SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtils.getSqlSessionFactory();
// 创建SqlSession
SqlSession openSession = sqlSessionFactory.openSession();
//List selectList = openSession.selectList(“user.getUserByUserName”, “%张%”);
List selectList = openSession.selectList(“user.getUserByUserName”, “张”);
for (User user : selectList) {
System.out.println(user);
}
// 释放资源
openSession.close();
}
3、mybatis入门
(1)编写SQL语句
INSERT INTO user
(id,
username,
birthday,
sex,
address )
VALUES
(‘id’,
‘username’,
‘birthday’,
‘sex’,
‘address’ );
(2)配置user映射文件:修改user.xml
INSERT INTO USER
(username
,
birthday
,
sex
,
address
)
VALUES (#{username},
#{birthday},
#{sex},
#{address});
(3)编写测试程序:MybatisTest当中创建testInsertUser方法
@Test
public void testInsertUser() {
// 获取sqlSessionFactory
SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtils.getSqlSessionFactory();
// 创建SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
User user = new User();
user.setSex(“1”);
user.setBirthday(new Date());
user.setUsername(“张飞”);
user.setAddress(“四川”);
sqlSession.insert(“user.insertUser”, user);
//提交事务
sqlSession.commit();
// 释放资源
sqlSession.close();
}
插入成功
(4)将sqlSessionFactory.openSession(true);设置为true自动提交事务
4、插入用户,返回主键
返回主键:方式一
(1)修改user.xml
(2)MybatisTest
@Test
public void testInsertUser() {
// 获取sqlSessionFactory
SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtils.getSqlSessionFactory();
// 创建SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession(true);// 设置为true自动提交事务
User user = new User();
user.setSex(“1”);
user.setBirthday(new Date());
user.setUsername(“张飞4”);
user.setAddress(“四川”);
sqlSession.insert(“user.insertUser”, user);
System.out.println(user);// 输出数控影响的行数
// 提交事务
// sqlSession.commit();
// 释放资源
sqlSession.close();
}
返回主键:方式二
(1)修改user.xml:替代了SQL语句并返回了int类型的值,到User的id当中
<insert id=“insertUser” parameterType=“com.itzheng.mybatis.pojo.User”
useGeneratedKeys=“true” keyProperty=“id”>
(2)MybatisTest当中的testInsertUser方法得到结果
5、插入用户,uuid使用
a、修改user的表结构
b、修改User类
private String uuid2;
public String getUuid2() {
return uuid2;
}
public void setUuid2(String uuid2) {
this.uuid2 = uuid2;
}
c、修改user.xml
创建新的插入数据库的规则
d、在MybatisTest当中添加testInsertUserUUID方法
@Test
public void testInsertUserUUID() {
// 获取sqlSessionFactory
SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtils.getSqlSessionFactory();
// 创建SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession(true);// 设置为true自动提交事务
User user = new User();
user.setSex(“1”);
user.setBirthday(new Date());
user.setUsername(“张飞7”);
user.setAddress(“四川”);
sqlSession.insert(“user.insertUserUUID”, user);
System.out.println(user);// 输出数控影响的行数
// 提交事务
// sqlSession.commit();
// 释放资源
sqlSession.close();
}
难道这样就够了吗?不,远远不够!
提前多熟悉阿里往年的面试题肯定是对面试有很大的帮助的,但是作为技术性职业,手里有实打实的技术才是你面对面试官最有用的利器,这是从内在散发出来的自信。
备战阿里时我花的最多的时间就是在学习技术上,占了我所有学习计划中的百分之70,这是一些我学习期间觉得还是很不错的一些学习笔记
我为什么要写这篇文章呢,其实我觉得学习是不能停下脚步的,在网络上和大家一起分享,一起讨论,不单单可以遇到更多一样的人,还可以扩大自己的眼界,学习到更多的技术,我还会在csdn、博客、掘金等网站上分享技术,这也是一种学习的方法。
今天就分享到这里了,谢谢大家的关注,以后会分享更多的干货给大家!
SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtils.getSqlSessionFactory();
// 创建SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession(true);// 设置为true自动提交事务
User user = new User();
user.setSex(“1”);
user.setBirthday(new Date());
user.setUsername(“张飞7”);
user.setAddress(“四川”);
sqlSession.insert(“user.insertUserUUID”, user);
System.out.println(user);// 输出数控影响的行数
// 提交事务
// sqlSession.commit();
// 释放资源
sqlSession.close();
}
难道这样就够了吗?不,远远不够!
提前多熟悉阿里往年的面试题肯定是对面试有很大的帮助的,但是作为技术性职业,手里有实打实的技术才是你面对面试官最有用的利器,这是从内在散发出来的自信。
备战阿里时我花的最多的时间就是在学习技术上,占了我所有学习计划中的百分之70,这是一些我学习期间觉得还是很不错的一些学习笔记
我为什么要写这篇文章呢,其实我觉得学习是不能停下脚步的,在网络上和大家一起分享,一起讨论,不单单可以遇到更多一样的人,还可以扩大自己的眼界,学习到更多的技术,我还会在csdn、博客、掘金等网站上分享技术,这也是一种学习的方法。
今天就分享到这里了,谢谢大家的关注,以后会分享更多的干货给大家!
[外链图片转存中…(img-sEnH9xLx-1719284147409)]
[外链图片转存中…(img-wh8uf0JQ-1719284147409)]
[外链图片转存中…(img-thytVsj5-1719284147410)]