使用mybatis访问mysql数据库之二
来源:互联网 发布:方正静蕾体 mac版 编辑:程序博客网 时间:2024/06/03 05:14
在使用mybatis访问mysql数据库的第一版中,我们需要在main代码中指定对应的SQL的ID和参数,这样就不太灵活了。下面,我们做一个新版的访问mysql数据库的程序。该版本使用了接口技术,将接口与对应的SQL的ID进行关联,在main代码中只需要使用接口中的方法就可以直接操作数据库,mybatis真是太好用了!
对数据库的user表建立配置文件。这个文件中主要定义了SQL语句。对应的文件名称为User.xml,内容如下:
建立一个对user表操作的接口IUserOperation.java,接口中的方法的名称,需要与User.xml中对应的SQL的ID一样。内容如下:
数据库访问测试程序:
运行上面的程序,然后在数据库中查询对应的表,即可用看到程序对表中数据的增加或者修改。
基础表的配置略。与《使用mybatis访问mysql数据库之一》中的表一致。
User.java的代码如下。各个字段需要与表中的字段名称一致。
package com.baby.javaStudy.mybatis.v2;public class User {private int id;private int classification;private String name;private String address;private String remark;public int getId() {return id;}public void setId(int id) {this.id = id;}public int getClassification() {return classification;}public void setClassification(int classification) {this.classification = classification;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getRemark() {return remark;}public void setRemark(String remark) {this.remark = remark;}@Overridepublic String toString() {return "User [id=" + id + ", classification=" + classification + ", name=" + name + ", address=" + address+ ", remark=" + remark + "]";}}
对数据库的user表建立配置文件。这个文件中主要定义了SQL语句。对应的文件名称为User.xml,内容如下:
<?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"><mapper namespace="com.baby.javaStudy.mybatis.v2.IUserOperation"><select id="selectByID" parameterType="int" resultType="User">select *from user where id = #{id}</select><!-- 为了返回list 类型而定义的returnMap --><resultMap type="User" id="UserList"><id column="id" property="id" /><result column="classification" property="classification" /><result column="name" property="name" /><result column="address" property="address" /><result column="remark" property="remark" /></resultMap><!-- 返回list 的select 语句,注意 resultMap 的值是指向前面定义好的 --><select id="selectByName" parameterType="string" resultMap="UserList">select * from user where name like #{name}</select><!--执行增加操作的SQL语句。id和parameterType 分别与IUserOperation接口中的addUser方法的名字和 参数类型一致。以#{name}的形式引用Student参数 的name属性,MyBatis将使用反射读取Student参数 的此属性。#{name}中name大小写敏感。引用其他 的gender等属性与此一致。seGeneratedKeys设置 为"true"表明要MyBatis获取由数据库自动生成的主 键;keyProperty="id"指定把获取到的主键值注入 到Student的id属性 --><insert id="add" parameterType="User" useGeneratedKeys="true"keyProperty="id">insert into user(classification,name,address,remark)values(#{classification},#{name},#{address},#{remark})</insert><update id="updateRemark" parameterType="User">update user set remark=#{remark} where id=#{id}</update><delete id="delete" parameterType="int">delete from user where id=#{id}</delete></mapper>
建立一个对user表操作的接口IUserOperation.java,接口中的方法的名称,需要与User.xml中对应的SQL的ID一样。内容如下:
package com.baby.javaStudy.mybatis.v2;import java.util.List;public interface IUserOperation {public User selectByID(int id);public List<User> selectByName(String name);public void add(User book);public void updateRemark(User book);public void delete(int id);}
数据库访问测试程序:
package com.baby.javaStudy.mybatis.v2;import java.io.Reader;import java.util.List;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;public class UserTestV2 {public static void main(String[] args) {SqlSession session = null;try {Reader reader = Resources.getResourceAsReader("com/baby/javaStudy/mybatis/v2/Configuration.xml");SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);session = sqlSessionFactory.openSession();IUserOperation userOperation = session.getMapper(IUserOperation.class);System.out.println("========selectByID() test========");User user = userOperation.selectByID(2);System.out.println(user);System.out.println("========selectByName() test========");List<User> users = userOperation.selectByName("%wang%");for(User user2 : users){System.out.println(user2);}System.out.println("========add() test========");User user3 = new User();user3.setClassification(1);user3.setName("baby");user3.setAddress("beijing");user3.setRemark("added from userTestv2.java");System.out.println("new user info is: "+user3);userOperation.add(user3);session.commit();System.out.println("========updateRemark() test========");User user4 = userOperation.selectByID(2);System.out.println("old user info is "+user4);user4.setRemark("modified from userTestV2.java");userOperation.updateRemark(user4);session.commit();user4 = userOperation.selectByID(2);System.out.println("new user info is "+user4);System.out.println("========delete() test========");User user5 = userOperation.selectByID(2);System.out.println("user need delete info is "+user5);userOperation.delete(user5.getId());session.commit();} catch (Exception e) {e.printStackTrace();} finally {session.close();}}}
运行上面的程序,然后在数据库中查询对应的表,即可用看到程序对表中数据的增加或者修改。
0 0
- 使用mybatis访问mysql数据库之二
- 使用mybatis访问mysql数据库之三
- 使用mybatis访问mysql数据库之一
- 谈谈今天第一次使用Mybatis访问MySql数据库的过程
- 使用ODBC访问数据库(二)
- 使用ODBC访问数据库(二)
- 使用ODBC访问数据库(二)
- 使用IDE访问mysql数据库
- 使用java访问MySQL数据库
- Maven + Spring MVC+Mybatis + MySQL +AngularJS + Bootstrap 实现简单微博应用(二)访问数据库
- VC ADO访问MySql数据库(MySql数据库初探二)
- Unity3D -- 使用数据库MySQL(数据存储之二)
- MyBatis 入门(二)--用接口方式访问数据库
- Spring+Mybatis+Mysql搭建分布式数据库访问框架
- Spring+Mybatis+Mysql搭建分布式数据库访问框架
- java-mybatis generator-生成 mysql 数据库访问文件
- Spring+Mybatis+Mysql搭建分布式数据库访问框架
- MySQL数据库学习之二
- Martin Fowler先生关于持续集成的一篇文章
- 中文写入数据库乱码及Incorrect string value: '\xF0\x9F...' for column 'XXX' at row 1解决
- Mac 10.10安装破解版Navicat Premium 11.0.16.dmg
- 贝塞尔曲线之购物车动画效果
- const符号表机制
- 使用mybatis访问mysql数据库之二
- html5的进阶demo
- 无法访问谷歌等外网处理
- C#学习之委托
- iOS开发之Xcode8兼容适配iOS 10资料整理笔记
- 使用属性在 ASP.NET Web API 2 路由创建一个 REST API
- LeetCode:Hash Table
- 对必需的库\jdk1.7.0\jre\lib\rt.jar 具有一定的访问限制问题
- Lua 协同程序(coroutine)