MyBatis初探
来源:互联网 发布:seo实战密码 编辑:程序博客网 时间:2024/06/09 15:09
下载
到github上下载MyBatis的jar包,点击这里,到github上查看各个版本,选择相应版本进行下载,由于网速过慢,多次下载失败,我选择了去 csdn上下载了个jar包,版本为3.2.3。除此之外还需要导入JDBC包,下载地址点击这里。导包的方式详见Eclipse引入jar包的三种方式,推荐使用user lib的方式添加。工程结构如下:
1.创建配置文件
1.1 创建mysql配置文件mysql.properties
jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://192.168.1.44/testjdbc.username=rootjdbc.password=rancho945
上面分别配置了数据库驱动,数据库连接和帐号密码。值得注意的是,在生产环境中,为了安全起见,不能直接用root用户,而是根据实际情况,分配相应的用户及其权限进行数据库的连接。这里是为了演示方便,直接用root。如果是用Linux,iptables有时候会拦截连接,如果iptables玩得不6的朋友,在测试环境中可以把iptables暂时关闭,并且在mysql中设置root用户开放给局域网访问。
1.2 创建MyBatis配置文件mybatis.cfg.xml
<?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> <!-- 引入外部配置文件 --> <properties resource="mysql.properties"></properties> <!-- 配置mybatis运行环境 --> <environments default="development"> <environment id="development"> <!-- type="JDBC" 代表使用JDBC的提交和回滚来管理事务 --> <transactionManager type="JDBC" /> <!-- mybatis提供了3种数据源类型,分别是:POOLED,UNPOOLED,JNDI --> <!-- POOLED 表示支持JDBC数据源连接池 --> <!-- UNPOOLED 表示不支持数据源连接池 --> <!-- JNDI 表示支持外部数据源连接池 --> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> </environments> <mappers> <!-- 告知映射文件方式1,一个一个的配置 <mapper resource="com/rancho945/DB/mapper/UserMapper.xml"/>--> <!-- 告知映射文件方式2,自动扫描包内的Mapper接口与配置文件 --> <package name="com/rancho945/DB/mapper"/> </mappers></configuration>
在properties节点引入了上面的mysql.properties文件,这样就可以在该文件中,通过
为了引入的方便,这mysql.properties和mybatis.cfg.xml都要放在src目录下
2. 创建数据表
为了演示,创建一个非常简单的数据表t_user:
create table t_user(id int not null primary key auto_increment,username varchar(60) not null,password varchar(40) not null);
3. 创建实体类
实体类UserBean.java中的属性要和数据表t_user中的数据列一致(事实上是可以不一致的,可以通过mapper文件灵活配置)
package com.rancho945.DB.bean;import java.io.Serializable;public class UserBean implements Serializable { private static final long serialVersionUID = 1L; private Integer id; private String username; private String password; public UserBean() { } public UserBean(String username, String password) { this.username = username; this.password = password; } 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 getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "UserBean [id=" + id + ", username=" + username + ", password=" + password + "]"; }}
4. 创建映射接口
数据映射接口UserMapper.java定义了对数据表t_user的增删查改功能:
package com.rancho945.DB.mapper;import java.util.List;import com.rancho945.DB.bean.UserBean;public interface UserMapper { /** * 新增用戶 * @param user * @return * @throws Exception */ public int insertUser(UserBean user) throws Exception; /** * 修改用戶 * @param user * @param id * @return * @throws Exception */ public int updateUser (UserBean user,int id) throws Exception; /** * 刪除用戶 * @param id * @return * @throws Exception */ public int deleteUser(int id) throws Exception; /** * 根据id查询用户信息 * @param id * @return * @throws Exception */ public UserBean selectUserById(int id) throws Exception; /** * 查询所有的用户信息 * @return * @throws Exception */ public List<UserBean> selectAllUser() throws Exception;}
5. 创建接口映射文件
接口映射文件定义了数据映射接口的操作以及实体类的映射关系,下面为UserMapper的映射
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.rancho945.DB.mapper.UserMapper"><!-- 自定义返回结果集 --> <resultMap id="userMap" type="com.rancho945.DB.bean.UserBean"> <id property="id" column="id" javaType="java.lang.Integer"></id> <result property="username" column="username" javaType="java.lang.String"></result> <result property="password" column="password" javaType="java.lang.String"></result> </resultMap><!-- 在各种标签中的id属性必须和接口中的方法名相同 , id属性值必须是唯一的,不能够重复使用。parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型--> <!-- useGeneratedKeys:( 仅 对 insert 有 用 ) 这 会 告 诉 MyBatis 使 用 JDBC 的getGeneratedKeys 方法来取出由数据(比如:像 MySQL 和 SQLServer 这样的数据库管理系统的自动递增字段)内部生成的主键。默认值: false。 --> <!--keyProperty: (仅对 insert有用)标记一个属性, MyBatis 会通过 getGeneratedKeys或者通过 insert 语句的 selectKey 子元素设置它的值。默认:不设置。 --><!--#{}中的内容,为占位符,当参数为某个JavaBean时,表示放置该Bean对象的属性值 --> <insert id="insertUser" useGeneratedKeys="true" keyProperty="id"> insert into t_user (username,password) values (#{username},#{password}) </insert> <update id="updateUser" > update t_user set username=#{username},password=#{password} where id=#{id} </update> <delete id="deleteUser" parameterType="int"> delete from t_user where id=#{id} </delete> <select id="selectUserById" parameterType="int" resultMap="userMap"> select * from t_user where id=#{id} </select> <select id="selectAllUser" resultMap="userMap"> select * from t_user </select></mapper>
映射文件详细配置,可参考xml映射文件
6.工具类
用于创建SqlSession的工具类DBUTools
package com.rancho945.DB.tools;import java.io.Reader;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 DBTools { public static SqlSessionFactory sessionFactory; static{ try { //使用MyBatis提供的Resources类加载mybatis的配置文件 Reader reader = Resources.getResourceAsReader("mybatis.cfg.xml"); //构建sqlSession的工厂 sessionFactory = new SqlSessionFactoryBuilder().build(reader); } catch (Exception e) { e.printStackTrace(); } } //创建能执行映射文件中sql的sqlSession public static SqlSession getSession(){ return sessionFactory.openSession(); }}
7.测试类
UserTest.java
package com.rancho945.DB.test;import java.util.List;import org.apache.ibatis.session.SqlSession;import com.rancho945.DB.bean.UserBean;import com.rancho945.DB.mapper.UserMapper;import com.rancho945.DB.tools.DBTools;public class UserTest { public static void main(String[] args) { // TODO Auto-generated method stub insertUser(); selectUserById(); selectAllUser(); deleteUser(); } /** * 新增用户 */ private static void insertUser() { SqlSession session = DBTools.getSession(); UserMapper mapper = session.getMapper(UserMapper.class); UserBean user = new UserBean("ffff", "1314520"); try { mapper.insertUser(user); System.out.println(user.toString()); session.commit(); } catch (Exception e) { e.printStackTrace(); session.rollback(); } } /** * 删除用户 */ private static void deleteUser(){ SqlSession session=DBTools.getSession(); UserMapper mapper=session.getMapper(UserMapper.class); try { mapper.deleteUser(1); session.commit(); } catch (Exception e) { e.printStackTrace(); session.rollback(); } } /** * 根据id查询用户 */ private static void selectUserById(){ SqlSession session=DBTools.getSession(); UserMapper mapper=session.getMapper(UserMapper.class); try { UserBean user= mapper.selectUserById(2); System.out.println(user.toString()); session.commit(); } catch (Exception e) { e.printStackTrace(); session.rollback(); } } /** * 查询所有的用户 */ private static void selectAllUser(){ SqlSession session=DBTools.getSession(); UserMapper mapper=session.getMapper(UserMapper.class); try { List<UserBean> user=mapper.selectAllUser(); System.out.println(user.toString()); session.commit(); } catch (Exception e) { e.printStackTrace(); session.rollback(); } }}
参考资料:Mybatis参考文档
- myBatis初探
- 初探MyBatis
- MyBatis初探
- 初探MyBatis
- Mybatis初探
- MyBatis初探
- myBatis初探
- MyBatis 初探
- Mybatis初探
- MyBatis初探
- Mybatis初探
- MyBatis初探
- 初探MyBatis
- Mybatis二级缓存初探
- Mybatis migration使用初探
- MyBatis框架之初探
- JAVA mybatis:初探
- Mybatis学习总结(一).初探Mybatis
- 欢迎使用CSDN-markdown编辑器
- [LeetCode]146. LRU Cache
- 寻找峰值
- 王学岗手势识别(下)
- 竞品分析与报告撰写实战指南
- MyBatis初探
- 滚轮事件--原生JS函数封装
- Centos 6 Docker配置桥接网络
- 数论之青蛙约会
- 两点距离
- python 函数式编程入门
- 有关魅族手机遇到TextView显示异常
- Centos7 下建立 Docker 桥接网络
- 电车 洛谷1346 dp