1、对原生态的jdbc程序问题总结
1.1 jdbc程序:使用jdbc查询mysql数据库中用户表的记录
1.2 问题:
1)数据库连接使用时创建、不使用时就释放:对数据库进行频繁的连接的创建和释放,造成数据库资源浪费,影响数据库性能---------------使用数据库连接池管理数据库连接
2)将sql语句硬编码到java代码中,如果sql语句修改,需要重新编译java代码,不利于系统维护-------------将sql语句配置在xml配置文件中,即使sql变化,不需要对java代码进行重新编译
3)向prepareStatement中设置参数,对占位符号位置和设置参数值,硬编码在java代码中,不利于系统维护-------------------将sql语句及占位符和参数全部配置在xml文件中
4)从resultSet中遍历结果集数据时,存在硬编码,将获取表的字段进行硬编码,不利于系统维护----------------------将结果集自动映射成java对象
2、mybatis框架原理
mysql语句的执行顺序 2.1 mybatis是什么?
mybatis是一个持久层框架,是apache下的顶级项目
github下:github/mybatis/mybatis-3/releases
mybatis让程序员将主要精力放在sql上,通过mybatis提供的映射方式,自由灵活生成满足sql需要的sql语句
mybatis可以将向preparestatement输入的参数自动进行输入映射,将查询结果集灵活映射成java对象(输出映射)。
2.2 mybatis框架
\
3、mybatis入门程序
3.1 需求
根据主键查询用户信息
根据用户名模糊查询用户信息
怎删改查.....
3.2 mybati运行环境(jar包):
从github/mybatis/mybatis-3/releases 下载
lib下:依赖包
mybatis-3.4.1.jar:核心包
3.3 log4j.properties
#Global logging configuration
log4j.rootLogger=ERROR, stdout
#MyBatis logging configuration...
log4j.logger.org.mybatis.example.BlogMapper=TRACE
#Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p[%t]-%m%n
3.4 工程目录结构
3.5 根据用户id查询用户信息、通过用户名模糊查询用户信息
3.5.1 编写映射文件(包括对应的实体类:User.java)
映射文件命名:l(原始的ibatis命名方式),mapper代理的映射文件名称叫做l
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-////DTD Mapper 3.0//EN"
"/dtd/mybatis-3-mapper.dtd">
<!--namespace命名空间,作用就是对sql进行分类化管理,理解sql隔离
注意:将来如果使用mapper代理方法开发,namespace有特殊作用-->
<mapper namespace="test">
<!--在映射文件中配置许多sql语句-->
<!--通过select执行数据库查询,
id:标识映射文件中的sql,成为statement的id,将sql语句封装到mapperStatement对象中,所以将id成为statement的id
parameterType:输入参数的类型
#{}:表示一个占位符
#{id}:其中id表示输入的参数,参数名就是id,如果输入参数是简单类型,#{}中的参数名可以任意
resultType:指定sql输出结果所映射的对象类型
-->
<select id="findUserById" parameterType="int" resultType="com.liyuan.po.User">
SELECT * FROM USER WHERE uid=#{id}
</select>
<!--${}:表示拼接sql串,将接收到的参数的内容不加任何修饰拼接到sql中-->
<select id="findUserByName" parameterType="java.lang.String" resultType="com.liyuan.po.User">
SELECT * FROM USER WHERE name LIKE '%${value}%'
</select>sql server 使用教程
</mapper>
3.5.2 将映射文件加载到SqlMapConfig配置文件中
<mappers>
<mapper resource="l"/>
</mappers>
3.5.3 程序编写
@Test
publicvoid findUserByIdTest()throwsIOException{
// mybatis配置文件
String resource ="l";
InputStream input =Resources.getResourceAsStream(resource);
// 创建会话工厂
SqlSessionFactory sqlSessionFactory =newSqlSessionFactoryBuilder()
.build(input);
// 通过工厂得到SqlSession
SqlSession sqlSession =shodan介绍 sqlSessionFactory.openSession();
c语言程序编译器 // 通过SqlSession操作数据库
User user = sqlSession.selectOne("test.findUserById",23);
System.out.println(user.getName());
// 释放资源
sqlSession.close();
}
// 根据name查询用户信息,得到一条记录的结果
@Test
publicvoid findUserByNameTest()throwsIOException{
// mybatis配置文件
String resource ="l";
InputStream input =Resources.php+ajax自动聊天回复getResourceAsStream(resource);
// 创建会话工厂
SqlSessionFactory sqlSessionFactory =newSqlSessionFactoryBuilder()
.build(input);
// 通过工厂得到SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
// 通过SqlSession操作数据库
List<User> list = sqlSession.selectList("test.findUserByName","李");
System.out.println(list.size());
// 释放资源
sqlSession.close();
}
3.6 插入用户信息
3.6.1 l映射文件:
<!--添加用户
parameterType:制定输入参数类型是pojo
#{}:中指定pojo属性名,接收到pojo对象的属性值,mybatis通过OGNL获取对象的属性值-->
<insert id="insertUser" parameterType="com.liyuan.po.User">
insert into user(username,password) value(#{username},#{password})
</insert>
3.6.2 测试代码:
@Test
publicvoid insertUserTest()throwsIOException{
// mybatis配置文件
String resource ="l";
InputStream input =Resources.getResourceAsStream(resource);
// 创建会话工厂
SqlSessionFactory sqlSessionFactory =newSqlSessionFactoryBuilder()
.build(input);
// 通过工厂得到SqlSession
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论