因为工作需要用到比jdbc更可靠的持久层框架了,所以开始学习mybatis。
这是一个mybatis 入门程序,实现简单查询。
感谢:http://www.cnblogs.com/xdp-gacl/tag/MyBatis%E5%AD%A6%E4%B9%A0%E6%80%BB%E7%BB%93/
一、流程
这个是整个test的项目结构
1.首先新建普通java项目,导入 mybatis 的包和 mysql数据库的驱动包
2.在src目录下创建一个conf.xml文件,进行数据源的配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <!-- 配置数据库连接信息 --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/testmysql" /> <property name="username" value="root" /> <property name="password" value="root" /> </dataSource> </environment> </environments> </configuration> |
3.定义表所对应的实体类,因为mybatis是把你的数据库表信息映射成你的java文件
所以你需要编写一个java的实体类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
package test; import java.util.Date; public class user { private Integer id; private String username; private String pass; private String email; private String password; private Integer isregistered; private String biaoshima; private Date createtime; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPass() { return pass; } public void setPass(String pass) { this.pass = pass; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Integer getIsregistered() { return isregistered; } public void setIsregistered(Integer isregistered) { this.isregistered = isregistered; } public String getBiaoshima() { return biaoshima; } public void setBiaoshima(String biaoshima) { this.biaoshima = biaoshima; } public Date getCreatetime() { return createtime; } public void setCreatetime(Date createtime) { this.createtime = createtime; } @Override public String toString() { return "user [id=" + id + ", username=" + username + ", pass=" + pass + ", email=" + email + ", password=" + password + ", isregistered=" + isregistered + ", biaoshima=" + biaoshima + ", createtime=" + createtime + "]"; } } |
4.然后就是定义操作user表的sql映射文件usermapper.xml
这个文件存放的就是你要执行的sql语句,必须按固定格式进行配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?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,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的 例如namespace="me.gacl.mapping.userMapper"就是me.gacl.mapping(包名)+userMapper(userMapper.xml文件去除后缀) --> <mapper namespace="usermapper"> <!-- 在select标签中编写查询的SQL语句, 设置select标签的id属性为getUser,id属性值必须是唯一的,不能够重复 使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型 resultType="me.gacl.domain.User"就表示将查询结果封装成一个User类的对象返回 User类就是users表所对应的实体类 --> <!-- 根据id查询得到一个user对象 --> <select id="getuser" parameterType="int" resultType="test.user"> select * from user where id=#{id} </select> </mapper> |
5.在conf.xml文件中注册usermapper.xml文件,完成最后的配置
在conf.xml中加入如下代码,完成sql语句文件的注册
1 2 3 4 5 |
<mappers> <!-- 注册userMapper.xml文件, userMapper.xml位于me.gacl.mapping这个包下,所以resource写成me/gacl/mapping/userMapper.xml--> <mapper resource="usermapper.xml"/> </mappers> |
6.编写测试类test.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
package test; import java.io.InputStream; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class test { public static void main(String[] args) { String resource = "conf.xml"; InputStream is = test.class.getClassLoader().getResourceAsStream(resource); SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is); SqlSession session = sessionFactory.openSession(); String statement = "usermapper.getuser"; user user = session.selectOne(statement,1); System.out.println(user.toString()); } } |
运行结果:
正确执行了sql语句。
二、总结
整合一下,以后可以对照着写。
很实用,赞。
谢谢您的回复!