第一步 //加载驱动
第二步 //通过管理驱动获取数据库连接
第三步 //定义sql语句
第四步 //获取statement
第五步 //设置参数
Connection connection=null;
PreparedStatement ps=null;
ResultSet rs = null;
try{
//加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//通过驱动获取数据库连接
connetion=DriverManger.getConnection("jdbc:mysql://localhost:3306/test","root","123456789");
//定义sql语句
String sql = "select * from lmonkey_user";
Statement stat = conn.createStatement();
ResultSet resultSet = stat.executeQuery(sql);
//打印
while (resultSet.next()){
String id = resultSet.getString("USER_ID");
String name = resultSet.getString("USER_NAME");
System.out.println(id + "t"+name);
}
conn.close();
stat.close();
}
}
分析问题:1、jdbc数据库配置信息存在编码问题;2、频繁创建释放数据库连接;
3、 sql语句和设置参数均出现硬编码问题
问题解决:1,配置文件;连接池 ;2、解决硬编码解决办法使用配置文件
1.2自定持久层框架思路:使用端:引用自定义持久层框架jar包 -> 配置数据库配置信息和sql配置信息、参数类型,返回值类型
sqlMapConfig.xml:存放数据库配置信息
mapper.xml:存放SQL配置信息
框架本身:对jdbc代码进行了封装
第一步:加载配置文件,根据配置文件路径加载文件
//编写sqlMapConfig.xml2、快速入门 2.1导入所需要的坐标//配置Mapper.xml //编写类将配置文件转为字节流 import javax.annotation.Resource; import java.io.InputStream; public class Resources { //根据配置文件的路径,将配置文件加载到输入流中 public static InputStream getResourcesAsSteam(String path){ InputStream resoucesAsSteam = Resource.class.getClassLoader().getResourceAsStream(path); return resoucesAsSteam; } } select * from user
2.2 配置核心配置文件sqlMapConfig.xmlorg.mybatis mybatis 3.5.6 mysql mysql-connector-java 8.0.22 junit junit 4.13.1
2.3 配置用户配置文件 UserMapper.xml
2.4 测试用例
//查询用例
@org.junit.Test
public void test() throws IOException {
//解析文件将其转为字节流
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = sessionFactory.openSession();
//获取需要执行的指令
List users = sqlSession.selectList("user.findAll");
for (User user : users) {
System.out.println(user);
}
//关闭资源
sqlSession.close();
}
2插入语句#{}用于替换所要插入的值但是名称一定要与User里面的值对应
insert into user value(#{id},#{username},#{password})
@org.junit.Test
public void test1() throws IOException {
//解析文件将其转为字节流
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = sessionFactory.openSession();
//获取需要执行的指令
User user = new User(2,"xiaoyi","root");
sqlSession.insert("user.insertuser",user);
//需要提交事务
sqlSession.commit();
//关闭资源
sqlSession.close();
}
3、修改操作
update user set password=#{password} where id = #{id}
@org.junit.Test public void test2() throws IOException { //解析文件将其转为字节流 InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml"); SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream); SqlSession sqlSession = sessionFactory.openSession(); //获取需要执行的指令 User user = new User(2,"xiaoyi","123456789"); sqlSession.update("user.updateuser",user); //需要提交事务 sqlSession.commit(); //关闭资源 sqlSession.close(); }
4、删除操作
delete from user where id=#{id}
@org.junit.Test public void test3() throws IOException { //解析文件将其转为字节流 InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml"); SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream); SqlSession sqlSession = sessionFactory.openSession(); //获取需要执行的指令 sqlSession.delete("user.deleteid",2); //需要提交事务 sqlSession.commit(); //关闭资源 sqlSession.close(); }



