MyBatis使用注解开发和无主配置文件开发的情况
MyBatis使用注解开发时就不在需要和接口对应的映射文件了
主要有以下几个注解
@Select()@Insert@Update()@Delete()
代码演示
项目结构:
数据库表设计
实体类
User
publicclassUserimplementsSerializable{ privatelonguserId; privateStringuserName; privateDatebirthday; privateStringsex; privateStringaddress; gettersettertoString
主配置文件mybatis-config.xml
db.properties
jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/web_test?characterEncoding=utf-8 jdbc.username=root jdbc.password=666
mapper接口
publicinterfaceUserMapper{ /** *查询所有用户信息 */ @Select("select*fromuser") ListfindAll(); /** *根据id查询用户信息 */ @Select("select*fromuserwhereuser_id=#{userId}") UserfindById(Integerid); /** *新增 */ @Insert("insertintouser(user_name,birthday,sex,address)values(#{userName},#{birthday},#{sex},#{address})") voidinsertUser(Useruser); /** *修改 */ @Update("updateusersetuser_name=#{userName},birthday=#{birthday},sex=#{sex},address=#{address}whereuser_id=#{userId}") voidupdateUser(Useruser); /** *删除 */ @Delete("deletefromuserwhereuser_id=#{userId}") voiddeleteUserById(Integerid); /** *通过id或者名字模糊查询 *多个参数查询方式二:@Param */ @Select("select*fromuserwhereuser_id=#{id}oruser_namelike'%${name}%'") List select(@Param("id")Integerid,@Param("name")Stringname); }
测试类
Demo
publicclassDemo{ publicstaticvoidmain(String[]args){ Stringpath="mybatis-config.xml"; InputStreamresourceAsStream=null; try{ resourceAsStream=Resources.getResourceAsStream(path); }catch(IOExceptione){ e.printStackTrace(); } SqlSessionFactorysqlSessionFactory=newSqlSessionFactoryBuilder().build(resourceAsStream); SqlSessionsqlSession=sqlSessionFactory.openSession(true); UserMappermapper=sqlSession.getMapper(UserMapper.class); //System.out.println(mapper.findAll()); //System.out.println(mapper.findById(1)); /*Useruser=newUser(); user.setUserName("老皮"); user.setBirthday(newDate()); mapper.insertUser(user);*/ /*Useruser=newUser(); user.setUserName("李立林"); user.setBirthday(newDate()); user.setUserId(27); mapper.updateUser(user);*/ //mapper.deleteUserById(27); System.out.println(mapper.select(1,"麻")); sqlSession.close(); try{ resourceAsStream.close(); }catch(IOExceptione){ e.printStackTrace(); } } }
使用注解开发的一些问题
如果数据库字段名和实体类的属性名不一致,也不遵循驼峰命名。这种情况下,如果是使用映射文件可以用resultMap来解决。
但是注解开发也是可以解决的:
*如果数据库列名和实体类属性名不一致或者没有开启驼峰命名,可以使用@Results解决这个问题 * *@Select("sql语句") *@Results({ *@Result(column="",property=""), *@Result(column="",property=""), *@Result(column="",property=""), *}) * *使用注解也可以一对一,一对多 *@Result(column="",property="",one=@One("sql语句")),一对一 *@Result(column="",property="",one=@Many("sql语句")),一对多
在mybatis的使用中,主配置文件mybatis-config.xml是十分重要的,那么能不能不使用主配置文件进行mybatis开发呢?
可以!!!
在官网中清楚的指出了可以使用java代码来代替xml主配置文件----》如下
尝试使用java类来代替主配置文件
MyBatisDemo
/** *使用java类代替mybatis-config.xml主配置文件 */ publicclassMyBatisDemo{ publicstaticvoidmain(String[]args){ //加载db.properties文件方式一 //InputStreamresourceAsStream=MyBatisDemo.class.getClassLoader().getResourceAsStream("db.properties"); //Propertiesproperties=newProperties(); //try{ //properties.load(resourceAsStream); //}catch(IOExceptione){ //e.printStackTrace(); //} //Stringdrive=properties.getProperty("jdbc.driverClassName"); //Stringurl=properties.getProperty("jdbc.url"); //Stringname=properties.getProperty("jdbc.username"); //Stringpass=properties.getProperty("jdbc.password"); //DataSourcedataSource=newPooledDataSource(drive,url,name,pass); //加载db.properties文件方式二(推荐) ResourceBundlebundle=ResourceBundle.getBundle("db"); Stringdrive=bundle.getString("jdbc.driverClassName"); Stringurl=bundle.getString("jdbc.url"); Stringname=bundle.getString("jdbc.username"); Stringpass=bundle.getString("jdbc.password"); DataSourcedataSource=newPooledDataSource(drive,url,name,pass); TransactionFactorytransactionFactory=newJdbcTransactionFactory(); Environmentenvironment=newEnvironment("development",transactionFactory,dataSource); Configurationconfiguration=newConfiguration(environment); //开启包扫描 configuration.addMappers("com.codeyancy.cn.mapper"); //开启驼峰命名 configuration.setMapUnderscoreToCamelCase(true); //设置别名 //configuration.getTypeAliasRegistry().registerAliases("com.codeyancy.cn.entity"); SqlSessionFactorysqlSessionFactory=newSqlSessionFactoryBuilder().build(configuration); SqlSessionsqlSession=sqlSessionFactory.openSession(true); UserMappermapper=sqlSession.getMapper(UserMapper.class); //打印查询所有 System.out.println(mapper.findAll()); sqlSession.close(); } }
简单测试后,是可以使用的。
到此这篇关于MyBatis使用注解开发和无主配置文件开发的情况的文章就介绍到这了,更多相关MyBatis注解开发无主配置文件内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。