mybatis的配置
来源:互联网 发布:福建弘扬软件怎么样 编辑:程序博客网 时间:2024/05/16 07:51
1.导入jar包到Dynamic项目中去。
简单的mybatis配置只需要mybatis-3.2.7.jar,因为本系统还用到mysql,所以还需要加上mysql-connector-java-5.1.24.jar。
2.创建并配置mybatis的配置文件mybatis.xml
在src目录下创建mybatis.xml文件,文件命名随意,最好不要把文件放到WEB-INF下,我之前放在那里总是出错。
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <environments default="development"> <environment id="development"> <!-- 使用jdbc事务管理,事务控制由mybatis管理--> <transactionManager type="JDBC" /> <!-- 数据库连接池,由mybatis管理--> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/test?characterEncoding=utf-8" /> <property name="username" value="root" /> <property name="password" value="1023894102" /> </dataSource> </environment> </environments></configuration>其中"url"中test是我数据库的名称,username和password是我MySql的账户名和密码。
3.在Test数据库中新建一张表userinfo,并手动添加一条数据。
4.在src目录下新建一个包com.guozi.entity存放实体类,并在这个包下新建实体类User.class。
package com.guozi.entity;public class User {private int U_ID;private String U_Name;private String U_Password;public int getU_ID() {return U_ID;}public void setU_ID(int u_ID) {U_ID = u_ID;}public String getU_Name() {return U_Name;}public void setU_Name(String u_Name) {U_Name = u_Name;}public String getU_Password() {return U_Password;}public void setU_Password(String u_Password) {U_Password = u_Password;}一般实体类是和数据库表做映射,所以属性最好和表的列属性保持一致,不过并不强制,命名也不要求一定相同。
属性都设置成私有属性,定义好好点击右键选择source-Generate Getters And Setters就能自动添加get和set 方法了。
5.创建User的映射文件UserMapper.xml。
在src目录下创建UserMapper.xml文件.规范来说应该建个包专门放置映射文件的。
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!-- namespace命名空间,作用就是对sql进行分类化的管理,理解为sql隔离 注意:使用mapper代理开发时,namespace有特殊作用 --><mapper namespace="guozi"><!-- 在映射文件中配置很多sql语句 --><!-- 需求:通过Id查询用户表的记录 --><!-- 通过SELECT执行数据库查询 id:标识映射文件中的sql,称为statement的id; 将sql语句封装在mapperStatement的对象中,所以Id称为Statement的id; parameterType:指定输入参数的类型,这里指定int型 #{}:表示一个占位符; #{id}:其中Id表示接收输入的参数,参数名称就是Id,如果输入参数是简单类型,#{}中的参数名可以任意,可以是value或者其它名称; resultType:指定sql输出结果所映射的java对象类型,select指定resultType表示将单条记录映射成java对象。--><select id="findUserById" parameterType="int" resultType="com.guozi.entity.User" > select * from userinfo where U_ID=#{id}</select><!-- 根据用户名称模糊查询用户信息,可能返回多条数据 resultType:指定的就是单条记录所映射的java类型; ${}:表示拼接sql字符串,将接收到的参数内容不加任何修饰拼接在sql中. 使用${}拼接sql,可能会引起sql注入 ${value}:接收输入参数的内容,如果传入的是简单类型,${}中只能使用value --><select id="findUserByName" parameterType="java.lang.String" resultType="com.guozi.entity.User" > select * from userinfo where U_Name LIKE '%${value}%'</select><!-- 添加用户 parameterType:指定输入的参数类型是pojo(包括用户信息);#{}中指定pojo的属性名称,接收到pojo对象的属性值 ,mybatis通过OGNL(类似struts2的OGNL)获取对象的属性值--><insert id="insertUser" parameterType="com.guozi.entity.User" > <!-- 将insert插入的数据的主键返回到User对象中; select last_insert_id():得到刚insert进去记录的主键值,只适用于自增主键; keyProperty:将查询到的主键值,设置到parameterType指定的对象的那个属性 order:select last_insert_id()执行顺序,相对于insert语句来说它的执行顺序。 resultType:指定select last_insert_id()的结果类型; --> <!-- <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer"> select last_insert_id() </selectKey> --> <!-- 使用mysql的uuid(),实现非自增主键的返回。 执行过程:通过uuid()得到主键,将主键设置到user对象的Id的属性中,其次,在insert执行时,从user对象中取出Id属性值; <selectKey keyProperty="id" order="BEFORE" resultType="java.lang.String"> select uuid() </selectKey> insert into t_user (id,username,birthday,sex,address) values(#{id},#{username},#{birthday},#{sex},#{address}) --> insert into userinfo (U_ID,U_Name,U_Password) values(#{U_ID},#{U_Name},#{U_Password})</insert><!-- 删除用户 根据ID删除用户,需要输入Id值--> <delete id="deleteUser" parameterType="java.lang.Integer"> delete from userinfo where U_ID=#{id} </delete><!-- 更新用户 需要传入用户的Id和用户的更新信息 parameterType:指定User对象,包括Id和用户的更新信息,注意:Id是必须存在的 #{id}:从输入的User对象中获取Id的属性值--><update id="updateUser" parameterType="com.guozi.entity.User"> update userinfo set U_Name=#{U_Name},U_Password=#{U_Password} where id=#{id}</update></mapper>
映射文件最重要的是sql操作,按照自己的需求来写,parameterType是输入类型,resultType是返回类型,返回的是实体类的话需要加上包名。
6.把UserMapper.xml文件加载到mybatis.xml文件中去。
在mybatis.xml中<configuration>标签内加上以下语句。
<!-- 加载映射文件 --> <mappers> <mapper resource="UserMapper.xml"/> </mappers>如果UserMapper.xml没有在src路径下,需要加上它的路径。举例如果在com.ccc.mapper包下边的话要这样写:"com/ccc/mapper/UserMapper.xml"
7.测试。
在src目录下新建一个包com.guozi.service,在包下新建class项目命名为UserService.class.
package com.guozi.service;import java.io.IOException;import java.io.InputStream;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import com.guozi.entity.User;public class UserService{public static void main(String[] args) throws IOException {// TODO Auto-generated method stubString resource = "mybatis.xml"; InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactor=new SqlSessionFactoryBuilder().build(inputStream);SqlSession sqlSession=sqlSessionFactor.openSession();User user=sqlSession.selectOne("guozi.findUserById", 1);System.out.println(user.getU_Name());sqlSession.close();}}其中User user=sqlSession.selectOne("guozi.findUserById",1)中 guozi是UserMapper.xml的命名空间,findUserById是我们在UserMapper.xml给这个查询设置的id,1是输入类型。User是返回类型。
直接在此页面右键run as 选java appcliation ,控制台输出为:
0 0
- mybatis-mybatis的基本配置
- mybatis-mybatis二级缓存的配置
- mybatis 的数据库连接配置
- MyBatis一对一的配置
- mybatis的xml配置
- MyBatis的基本配置
- mybatis mapper的配置
- springMVC +mybatis的配置
- Mybatis的Spring配置
- mybatis 框架的配置
- mybatis的配置
- mybatis的配置
- mybatis的一些配置
- mybatis的setting配置
- Mybatis的二级缓存配置
- Mybatis的二级缓存配置
- Mybatis的二级缓存配置
- mybatis框架的配置
- input 判断文件类型
- 华为路由器BGP路由选路和负载均衡
- 状态模式(state)
- poj 3311 Hie with the Pie(状态压缩DP+floyd)
- MyBatis学习总结(七)——基于Maven的Mybatis和Spring整合 实战
- mybatis的配置
- MeasureSpec学习 - 转
- 《python基础教程》项目3
- greendao模糊查询
- Notes: Garbage Collection in Java(Java的自动垃圾回收机制)
- Latent Embeddings for Zero-shot Classification
- 安卓系统重启次数统计
- kmp模板
- ffmpeg与x264编码指南 转码优化