myBatis学习笔记

最近在学习myBatis,所以写下一些自认为需要记住的东西以便后续查阅。
首先myBatis的与hibernate的不同之处是
hibernate是全自动化的sql操作框架,这就决定了使用者需要按照它的规则来实现,掌握起来比较复杂,并且它也无法根据需求优化或定制SQL语句。
hibernate适用于中小型的业务需求变动不大的项目
而myBatis是半自动话的操作框架,程序员需要自己写一部分sql语句,优点是灵活,适用于大型项目如电商。


首先在环境配置方面
这里需要说下,我用的navicat for mysql,mysql5.6解压缩版(比较干净),myeclipse。这三个软件的安装破解过程网上很多可以自行搜索
当数据库中文内容在这三个工具中传递时,会出现中文乱码的问题困扰了很久,查阅了N多的博客后终于解决了。
这里三个工具统一使用UTF8编码
首先mysql5.6的设置,网上给出的使用命令“set character_set_server=utf8”以及“set names utf8”都是无法解决问题的,只能保证cmd控制台中中文显示正常,当myeclipse使用时还是会有乱码的,正确的方法是,如果使用mysql解压缩版的话,直接在安装目录下创建my.ini文件,文件内容与my-default.ini一致,不同的是在[mysqld]下增加character_set_server=utf8,然后在sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 下增加:
[client]
port=3306
default-character-set=utf8


这样当你在cmd控制台中使用show variables like ‘char%’;指令就会看到character_set_server与character_set_database的编码格式都变为utf8了
myeclipse的设置是在windows-->preferences-->workspace-->text file encoding-->others中选择utf-8
这样代码就能正常运行并且在console中正常显示中文字符了
这两步做完,你将能够在cmd控制台中添加数据并被myeclipse正确显示了


如果为了更加方便管理操作数据库使用navicat for mysql工具的话,该工具也需要正确配置,首先右击数据库连接,在连接属性中“高级”勾选“使用MySql字符集”,采用默认字符集一般是UTF8,不是的话自己选择一下,然后连接数据库并在database(我的是Test)上右击,选择“数据库属性”字符集选择utf8,排序规则选择utf8_general_ci,这样就大功告成了,在navicat for mysql添加的数据能正确在cmd控制台以及myeclipse工具中显示了。


现在就可以开始编写最简单的jdbc操作程序
1 导入mysql驱动包:mysql-connector-java-5.1.7-bin.jar
2 编写代码:
//这三个的类型都是接口
               Connection connection = null;      //数据库连接
PreparedStatement preparedStatement=null; //预处理statement
ResultSet resultset=null; //返回结果集合


//加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
                //获取数据库连接
connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/test?characterEncoding=utf-8","root","root");
//编写查找语句
String sql = "select * from user where username=?";
//加载并为占位符填入值
                preparedStatement=connection.prepareStatement(sql);

preparedStatement.setString(1, "张三丰");


//执行查找
resultset = preparedStatement.executeQuery();


//查找结束后,输出结果
while(resultset.next())
{
System.out.println(resultset.getString("id")+" "+" "+resultset.getString("username")+"\n");
}
最后在finally中关闭connection ,preparedStatement,resultset
finally{
if(resultset!=null)
{
try {
resultset.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(preparedStatement!=null)
{
try {
preparedStatement.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(connection!=null)
{
try {
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
               }


这样执行后会显示:
13  张三丰


总结:
传统的jdbc操作方法存在的缺点是,有很多内容是硬编码的,程序不够灵活,需要有一个框架结构能够灵活地配置它们,这个框架就是mybatis
另外就是传统的方法数据库连接并操作完成后需要关闭,频繁操作会造成性能下降,所以需要用连接池来提高性能


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值