第一个mybatis程序
思路 搭建环境->导入myBatis->编写代码-》测试
1.搭建环境
-
搭建数据库
CREATE DATABASE ’mybatis‘
USE ‘mybatis’
CREATE TABLE USER(
id INT(20) NOT NULL PRIMARY KEY ,
name VARCHAR(30) DEFAULT(NULL),
pwd VARCHAR(30) DEFAULT(NULL)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
INSERT INTO user(id,name,pwd)VALUES
(1,'狂神','123456'),
(2,'张三','123'),
(3,'李四','123')
-
新建项目
1.新建maven新项目
2.删除src目录
3.导入maven依赖
-
创建一个模块
1.编写mybatis核心配置文件
2.编写mybatis工具类
public class MybatisUtils { private static SqlSessionFactory sqlSessionFactory; static { try { //使用mybatis第一步获取slqSession对象 String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { throw new RuntimeException(e); } } //既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例 //SqlSession 提供了在数据库执行 SQL 命令所需的所有方法 public static SqlSession getSqlsession(){ SqlSession sqlSession = sqlSessionFactory.openSession(); return sqlSession ; } }
-
编写代码
-
实体类
public class User { private int id; private String name ; private String pwd; public User() { } public User(int id, String name, String pwd) { this.id = id; this.name = name; this.pwd = pwd; } 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 getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", pwd='" + pwd + '\'' + '}'; } }
-
dao接口
public interface UserDao { List <User> getUserList(); }
-
接口实现类由原来的impl转换为一个mapper文件
<?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绑定一个对应的dao接口或这mapper接口--> <mapper namespace="dao.UserDao"> <!-- select查询语句--> <select id="getUserList" resultType="pojo.User"> select * from mybatis.user </select> </mapper>
-
-
测试
-
注意点
-
org.apache.ibatis.binding.BindingException: Type interface dao.UserDao is not known to the MapperRegistry.
MapperRegistry
每一个都要注册
<mappers> <mapper resource="dao.UserMapper.xml"/> </mappers>
开启资源过滤
<build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource> </resources> </build>
-
-
junit测试
-
public class UserDaoTest { @Test public void tets(){ //第一步,获取SqlSession对象 SqlSession sqlsession = MybatisUtils.getSqlsession(); //第二部,执行sql //方式一getmapper UserDao mapper = sqlsession.getMapper(UserDao.class); List<User> userList = mapper.getUserList(); for (User user : userList) { System.out.println(user); } sqlsession.close(); } }
-
useSSL=false和true的区别:
SSL(Secure Sockets Layer 安全套接字协议),在mysql进行连接的时候,如果mysql的版本是5.7之后的版本必须要加上useSSL=false,mysql5.7以及之前的版本则不用进行添加useSSL=false,会默认为false,一般情况下都是使用useSSL=false,尤其是在将项目部署到linux上时,一定要使用useSSL=false!!!,useSSL=true是进行安全验证,一般通过证书或者令牌什么的,useSSL=false就是通过账号密码进行连接,通常使用useSSL=false!!!
设置编码格式
jdbc:mysql://localhost:3306/test?useSSL=false
characterEncoding=utf-8& useUnicode=true&characterEncoding=UTF-8
mysql数据库用的是gbk编码,而项目数据库用的是utf-8编码。这时候如果添加了useUnicode=true&characterEncoding=UTF-8 ,那么作用有如下两个方面:
1. 存数据时:
数据库在存放项目数据的时候会先用UTF-8格式将数据解码成字节码,然后再将解码后的字节码重新使用GBK编码存放到数据库中。
2.取数据时:
在从数据库中取数据的时候,数据库会先将数据库中的数据按GBK格式解码成字节码,然后再将解码后的字节码重新按UTF-8格式编码数据,最后再将数据返回给客户端。
注意:在xml配置文件中配置数据库utl时,要使用&的转义字符也就是&
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术